模板 虚函数
来源:互联网 发布:深圳迈瑞工资待遇知乎 编辑:程序博客网 时间:2024/04/30 08:30
http://bbs.csdn.net/topics/340247978
按我的阅读和设计经验,一个体系结构如果要用模板,那么这个体系里应该全都是模板,如果实在要公开某些虚基类,一般在模板继承链中最底层(最后派生层)实现基类函数(除非有特殊需求),但前提是这个虚基类的成员参数不能是模板。
在模板世界里,虚函数除了增加虚表大小和降低运行性能,没有实际意义。STL/ATL/WTL是典型的全模板架构,没有任何虚函数,MFC采用的是全虚表架构,虽然有部分模板类,但只是作为工具类存在,有没有都不影响整体。
全模板架构的好处就是:你能由粗到细来设计模板。一旦某种粒度的模板不能满足要求,则可以把需要抽象的部分再次提炼成模板而不是提炼成基类,而且所有函数都是编译期就定好了。这样不断提炼不断细分的后果就是代码越来越晦涩难懂,可读性很差。全虚表架构刚好相反,你必须先设计基类,再实现派生类,它的代码可读性非常好,但虚表的值是在运行期才填入的。
废话说了不少,现在尝试解决你的问题。你不是想实现函数调用操作符吗,先按照参数个数实现9个模板类:
template<class T>
class CallT0
{
public:
void operator()(){}
};
template<class T, typename param1>
class CallT1
{
public:
void operator()(param1 p1) {...}
};
......
第二步,根据实际的类选择不同的模板基类:
template<class T>
class delegate_0 : public CallT0<T>
{
...
};
template<class T, typename param1>
class delegate_1 : public CallT1<T,param1>
{
...
};
......
你有没有发现这种设计很好写代码?强行把编译期的多态和运行期的多态混合在一起,就像新手练瑜伽,无论如何找不到着力点。
- 模板,虚函数,内联函数
- 模板vs虚函数
- 模板 虚函数
- 使用模板模拟虚函数
- 成员函数模板不能为虚函数
- 纯虚函数和模板函数
- 函数模板、类模板
- 模板--->函数模板
- 模板函数,模板类
- 模板之函数模板
- C++ 模板->模板函数
- 类模板(函数模板)
- 模板---函数模板
- 函数模板 类模板
- 浅谈模板----函数模板
- 关于模板--模板函数
- 函数模板、类模板
- 模板之函数模板
- HadoopWord第一个实例运行的介绍(甲壳虫)
- 关于davinci的编译
- _beginthreadex、CreateThread、AfxBeginThread的选择
- NVL函数 Oracle/PLSQL中的一个函数
- 如何成为Python高手
- 模板 虚函数
- MINA2.0用户手册中文版--第七章 MINA中的处理程序Handler
- 从零开始学WCF(2)设计和实现服务协定
- REST架构风格的理解(分布式应用系统的架构演变)
- cocos2d iOS7 彻底隐藏 status bar
- 记录下最原始的xmlHttp
- jquery easyui easyloader加载外部js文件失败问题解决
- sqlserver获取日期时间
- MINA2.0用户手册中文版--第六章 MINA中的传输 第一节 基于APR的传输