虚拟继承和模板继承
来源:互联网 发布:淘宝登录 编辑:程序博客网 时间:2024/05/01 12:20
虚拟继承代码:
class B1{public: void SayHi() { PrintClassName(); }protected: virtual void PrintClassName() { printf("This is B1. \n"); }};class D1 : public B1{};class D2 : public B1{protected: virtual void PrintClassName() { printf("This is D2. \n"); }};int _tmain(int argc, _TCHAR* argv[]){ D1 d1; D2 d2; d1.SayHi(); d2.SayHi(); getchar(); return 0;}
模板继承代码:
template<class T>class B1{public: void SayHi() { T* pT = static_cast<T*>(this); pT->PrintClassName(); }protected: void PrintClassName() { printf("This is B1. \n"); }};class D1 : public B1<D1>{};class D2 : public B1<D2>{public: void PrintClassName() { printf("This is D2. \n"); }};int _tmain(int argc, _TCHAR* argv[]){ D1 d1; D2 d2; d1.SayHi(); d2.SayHi(); getchar(); return 0;}
模板继承的优点:
1) 不需要使用对象的指针
2) 节省内存,因为不需要使用虚函数表
3) 不会因为未初始化的虚函数表导致使用NULL指针
4) 所有函数的调用在编译时确定,因此它们是可以优化的。
0 0
- 虚拟继承和模板继承
- 多重继承和虚拟继承
- 虚拟函数和虚拟继承
- 虚拟继承和虚基类
- 继承----有关虚函数和虚拟继承
- 关于虚拟继承和直接继承
- 关于多重继承和虚拟继承
- C++:菱形继承和虚拟继承
- 菱形继承和菱形虚拟继承探索
- C++菱形继承和菱形虚拟继承
- 类继承和子类型 多继承和虚拟继承
- 区分继承和模板
- 区分继承和模板
- 区分继承和模板
- C++模板和继承
- C++模板和继承
- 虚拟继承和虚表
- 多重继承,虚拟继承
- 第十六周 项目3 归并排序算法的改进
- 图——邻接表
- 第16周 排序(2)项目1-冒泡排序
- linux之sed用法
- 第16周项目1-验证算法(6)堆排序
- 虚拟继承和模板继承
- FMDB使用
- (第十六周项目1)验证算法(2)希尔排序
- 书摘《人人都是产品经理》——4年产品经理的思维书2
- Windows Tomcat自动启动
- 安卓笔记Activity间传递数据
- Spring集成ehcache
- redis专题-6.持久化RDB 和 AOF
- 使用Eclipse远程连接MySQL,以定时查询数据为示例