条款 07 为多态基类声明vitual析构函数
来源:互联网 发布:达芬奇14mac怎么改中文 编辑:程序博客网 时间:2024/05/01 11:55
1 在有多态的基类中把析构函数声明为virtual
因为在delete使用指向子类的基类指针(多态)时,尽管是指向子类,但因为指针的类型为基类类型,导致子类并没有被析构,形成局部销毁
2 没有virtual的基类,尽量避免把析构声明为virtual ,因为虚的在会增加对象的大小的50%~%100,也影响其可移植性
3 非多态用途的string ,STL中的vector,list,set等的析构函数都为non-virtual,因为他们都非禁止派生,如果你试图继承他们,无意间把你派生的子类指针转换成了基类类型,在 delete后又出错,且子类也并未析构
4 如果你想拥有一个不被实例的基类并且用来通过基类接口处理子类对象,可以把基类的析构定义为纯虚
因为在delete使用指向子类的基类指针(多态)时,尽管是指向子类,但因为指针的类型为基类类型,导致子类并没有被析构,形成局部销毁
2 没有virtual的基类,尽量避免把析构声明为virtual ,因为虚的在会增加对象的大小的50%~%100,也影响其可移植性
3 非多态用途的string ,STL中的vector,list,set等的析构函数都为non-virtual,因为他们都非禁止派生,如果你试图继承他们,无意间把你派生的子类指针转换成了基类类型,在 delete后又出错,且子类也并未析构
4 如果你想拥有一个不被实例的基类并且用来通过基类接口处理子类对象,可以把基类的析构定义为纯虚
0 0
- 条款 07 为多态基类声明vitual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款:07 为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款07 为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数
- 条款7:为多态基类声明VIRTUAL析构函数
- 条款7:为多态基类声明virtual析构函数
- 条款7:为多态基类声明virtual析构函数
- 条款7:为多态基类声明virtual析构函数
- 条款7 为多态基类声明virtual析构函数
- 条款7:为多态基类声明virtual析构函数
- Effective C++学习7 条款07:为多态基类声明virtual析构函数
- 条款07:为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes.)
- SQL存储过程+事务 常用实例
- 剑指offer整理归纳(2/2)
- 树莓派折腾日记2-DLNA云服务器的架设
- Web母版制作和母版嵌套
- arduino uno接口部分介绍
- 条款 07 为多态基类声明vitual析构函数
- poj3271Lilypad Pondg
- 编写一个函数,它的返回值是主串中第一个字符子串的位置以后的所有字符
- Test
- 计算机网络之——DNS域名系统
- dojo小例子(33)dojo.request.script通过JSONP实现跨域
- django的get和filter方法的区别
- SQLite学习笔记(15)-B-tree(1)
- security analysis and visualization livecd