关于多态和虚函数
来源:互联网 发布:java nio jar 编辑:程序博客网 时间:2024/05/21 17:08
经典语录:
1 继承一个没有虚析构函数的类是危险的!
2 多态的两个条件是 父类指针子类对象 & 父类vitual虚函数 都满足
看代码:
class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; //virtual 1 :虚析构函数 virtual void DoSomething() //virtual 2 :多态 { cout << "Do something in class ClxBase!" << endl; };};class ClxDerived : public ClxBase{public: ClxDerived() {}; ~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; }; void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };};void main(){ ClxBase *pTest = new ClxDerived; pTest->DoSomething(); delete pTest; }
1 如果把第一个virtual去掉,则会出现内存泄露,原因是delete pTest时调用了只是父类的析构函数,析构的就是子类对象的父类部分。
2 对于要实现多态,连个条件是一定都要满足的
保留第二个virtual时,输出的是Do something in class ClxDerived
去掉第二个virtual后,则执行父类的函数了,故有Do something in class ClxBase
以后写代码,写继承要注意这两点,本质都是对多态条件的理解……
推荐博文:http://blog.csdn.net/rhzwan123/archive/2008/03/05/2151904.aspx
- 关于多态和虚函数
- 关于虚函数和多态(很好的解释)
- 关于 [虚函数] 和 [虚函数表]
- 关于多态中的虚函数
- 关于继承和虚函数的问题
- 关于C++和C#虚函数 区别
- 关于多态性和虚函数的理解
- 关于const和函数
- 关于C++虚函数和纯虚函数
- 关于C++虚函数和纯虚函数
- 关于析构函数和纯虚函数
- 关于继承中子类和父类中构造函数和析构函数运行的顺序,和继承的多态
- 多态和虚函数
- 虚函数和多态
- 多态和虚函数
- 多态和虚函数
- 多态和虚函数
- 虚函数和多态
- 【PHP设计模式】单例模式
- 【排序系列】插入排序java实现
- 【排序系列】快速排序java实现
- J2ME概念介绍
- 【PHP设计模式】策略模式
- 关于多态和虚函数
- void* 指针的二三事
- 【读书笔记-产品】 读《UCD火花集》第一章:用户体验设计在团队中
- 五种I/O 模式
- 【读书文摘-产品】选择的体验
- 在MFC应用程序中遇到的字符集问题(整理总结)
- 【Linux网络开发】简单进程
- Linux下通用线程池的构建
- 【读书笔记-产品】各具特色的SNS网站