纯虚析构函数必须给出定义
来源:互联网 发布:php权限管理教程 编辑:程序博客网 时间:2024/05/16 17:31
Effective C++ 条歀07:为多态基类声明virtual析构函数(Declare destructors virtualin polymorphic base classes)
纯虚函数
纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
虚函数是C++语言的精髓。含有纯虚函数的类被称为抽象类,不能被实例化生成对象,只能派生。由它派生的类的纯虚函数如果没有被实现,那么,该派生类还是个抽象类。只有全部实现了纯虚函数的派生类才可以被实例化。
纯虚函数的可定义性
定义一个函数为纯虚函数,一般表示该函数没有被实现。但是,这不代表纯虚函数不能被实现。纯虚函数也是可以定义的。
纯虚析构函数
虚析构函数是为了让通过基类指针或引用可以正确释放派生类对象。有时候如果想让基类成为一个抽象类,也就是不能被实例化,可以为类引入一个纯虚函数。但如果手上没有任何purevirtual函数时,该怎么办?由于抽象类总是会被作为基类用于派生的,而基类就该有一个虚的析构函数,并且由纯虚函数可以导致抽象类。所以常常把基类的析构函数声明为纯虚析构函数。又由于所有对象析构时,最后都会调用其基类的析构函数,所以基类的析构函数必须有定义。纯虚析构函数也不例外。
所以,必须为基类的纯虚析构函数提供一个定义,否则,链接器会发出抱怨的。
输出结果为:
0 0
- 纯虚析构函数必须给出定义
- 必须定义复制构造函数
- 纯虚析构函数必须有定义(可以是空的)
- 7.1.19 已知string类的定义,给出函数实现
- 定义拷贝构造函数必须同时定义构造函数
- static 成员函数定义(必须的)
- 虚函数必须定义(纯虚函数除外)
- 我给出的信息定义
- 用变量a给出定义
- 《第四周实验报告1-1》---一个三角形类,请给出各成员函数的定义
- 第四周任务一:设计一个三角形类,给出个成员函数的定义
- 下面设计一个三角形类,请给出各成员函数的定义
- C++中虚函数必须有定义吗?
- c程序的变量定义必须在所有函数之前?!
- inline函数必须在头文件中定义吗?
- inline函数必须在头文件中定义吗?
- inline函数必须在头文件中定义吗?
- 模板函数原型声明和定义实现必须放在一起
- 网易邮箱大师获取下载链接时的验证码的分析解决 python
- 通过 Visual Studio 对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试
- mount 命令详解
- java(instanceof操作符、对象类型转换 、final 关键字、final,finally,finalize的区别、static关键字,修饰符 )
- mutable和volatile
- 纯虚析构函数必须给出定义
- php漏洞文章收集
- opencv重映射remap( )函数
- 笔记:CSS改变webkit的浏览器滚动条样式
- BaseRecyclerViewAdapterHelper之BaseMultiItemQuickAdapter实现自定义item类型
- 嵌入式linux TCP socket编程
- Linux系统使用——文件搜素命令
- SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDRO
- IOS上 关于状态栏的相关设置(UIStatusBar)