| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5372 人关注过本帖
标题:析构函数为什么不能声明为纯虚函数的形式?
只看楼主 加入收藏
CooperOne
Rank: 2
来 自:珠海
等 级:论坛游民
帖 子:40
专家分:48
注 册:2012-1-25
结帖率:75%
收藏
已结贴  问题点数:8 回复次数:21 
析构函数为什么不能声明为纯虚函数的形式?
如题

virtual ~Node(){};能通过编译
virtual ~Node()=0;不能通过编译


求解
搜索更多相关主题的帖子: 虚函数 声明 
2012-03-01 13:22
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:4 
可以,但是也要给出定义。

My life is brilliant
2012-03-01 15:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
顶楼上
2012-03-02 08:16
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:1 
不能声明为纯虚函数,2L纯粹乱说。继承的时候要先构造父类,析构时只能调用子类的析构,父类不能被删除。
2012-03-02 08:23
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:3 
以下是引用lucky563591在2012-3-2 08:23:17的发言:

不能声明为纯虚函数,2L纯粹乱说。继承的时候要先构造父类,析构时只能调用子类的析构,父类不能被删除。
这个真的不可以吗?怎么我了解到的是可以的呢?在Effective C++中有说到,如果有什么依据请指出来,多谢。

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-02 09:42
CooperOne
Rank: 2
来 自:珠海
等 级:论坛游民
帖 子:40
专家分:48
注 册:2012-1-25
收藏
得分:0 
回复 2楼 lz1091914999
它都纯虚函数了...怎么个定义法啊?...

蹲得越低,跳得越高.
2012-03-02 15:09
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
以下是引用CooperOne在2012-3-2 15:09:57的发言:

它都纯虚函数了...怎么个定义法啊?...
这个就要多看看ec thinking in c++ 等书了

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-02 15:27
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
想想,构造和析构函数都有着特别的意义,这是与其它函数不同的,并且在一个类层次中析构函数都会被调用,那么如果一个类没有析构函数的定义,那么调用那一块代码呢?
但是如果需要一个函数体,那又怎么称得上是“纯”?它的唯一价值就是让这个类成为抽象类,所以不能创建这个类的对象,当然让其它成员函数成为纯的效果也一样。
但是继承一个有纯虚析构函数的类的时候,在派生类中可以不给出析构函数的定义,并且这个类也不是抽象类,这是与其它函数不同的地方(其它纯虚函数没有给出定义的话,这个类也是抽象类)。因为编译器自动帮我们生成了一个定义,所以也可以认为重写了父类的纯虚函数。所以你明白为什么编译器和链接器强迫我们为它提供一个函数体了嘛?

My life is brilliant
2012-03-02 15:59
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 4楼 lucky563591
不知道您的C++是中国哪位教授 传授的呢?

My life is brilliant
2012-03-02 16:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
额……我觉得楼主这个问题有陷阱的性质……
2012-03-02 18:22
快速回复:析构函数为什么不能声明为纯虚函数的形式?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017533 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved