纯虚析构函数与虚析构函数区别是什么?

flyaway8888 2006-11-09 10:23:43
如题
...全文
655 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
OOPhaisky 2006-11-09
  • 打赏
  • 举报
回复
纯虚析构函数与虚析构函数区别是什么?
-------------------------------------------------------------------
纯虚析构函数意味着此类为抽象类,不可以实例化,还意味着,此纯虚析构函数在本类中可以不必定义。
虚析构函数则没有上述两点含义。

但是,提醒楼主一点,即使为一个基类声明了一个纯虚析构函数,那么也应该为其提供定义:
class base{
public:
virtual ~base() = 0;
};
base::~base(){ cout << "base destructor" << endl;}//仍然要为这个纯虚析构函数提供定义
class derived: public base{
public:
~derived(){ cout << "derived destructor" << endl; }
};

base *pb = new derived;
delete pb;//因为此处会调用base::~base(),所以上述定义是必要的,否则链接出错(当然了,编译会顺利通过的)
superxiaomm 2006-11-09
  • 打赏
  • 举报
回复
纯虚函数 和 虚函数的区别,
前者表明该类型是一个 抽象类, 不能有实例;
后者只是一般的使用了虚函数的类型, 可能会产生多态。
YourKing 2006-11-09
  • 打赏
  • 举报
回复
又一个不看书的

virtual void p() =0;

virtual void p() ;

========================
人家说了是析构函数了
p前面要加个~吧? :)
asusa3a 2006-11-09
  • 打赏
  • 举报
回复
备用。mark
zhp831221 2006-11-09
  • 打赏
  • 举报
回复
纯虚函数 和 虚函数的区别,
前者表明该类型是一个 抽象类, 不能有实例,但是能有指针;
后者只是一般的使用了虚函数的类型, 可能会产生多态。
taodm 2006-11-09
  • 打赏
  • 举报
回复
去找本C++ Primer,到书后索引表搜索pure virtual
飞哥 2006-11-09
  • 打赏
  • 举报
回复
做的都是同样的事情

那就是自己调自己的析构函数·
飞哥 2006-11-09
  • 打赏
  • 举报
回复
又一个不看书的

virtual void p() =0;

virtual void p() ;
jixingzhong 2006-11-09
  • 打赏
  • 举报
回复
纯虚函数 和 虚函数的区别,
前者表明该类型是一个 抽象类, 不能有实例;
后者只是一般的使用了虚函数的类型, 可能会产生多态。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧