精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>C、C++语言基础>>Re:析构函数一般都应该声明成虚函数吗

主题:Re:析构函数一般都应该声明成虚函数吗
发信人: wenbobo(灌了拂衣去)
整理人: wenbobo(2002-12-24 09:24:15), 站内信件

这我当然知道。但是,C++语法上允许,并不表示我们写程序也可以这样做。

一个问题是,C++的机制里面根本没有阻止“该类不会被派生出去”的功能,而一个口头的甚至是条文的限制,也无法阻止其他人来派生,既然类的创建者无法规定后来者的使用,那就最好自律。不然,错误的发生简直是可以预料的。

尤其是,当你只有该类的二进制代码和一个细节隐藏做得很漂亮的头文件时,你无法知道基类长什么模样,犯错误的可能性就更大了。更加糟糕的事情是,当你总算发现问题了,你也无法通过修改自己的代码来纠正,只能放弃这个基类;如果有幸能够修改基类的源码,那也够悬的,为了实现子类而需要改父类,这显然不是什么好的封装。这样给后来者造成干扰和困惑的类,是有违C++代码重用精神的。

除非写代码的人能够确信他的类完全是一次性使用的代码(不过这样的代码也就没有必要用C++的类了),否则永远不要那样断自己后路。

【 在 cstring 的大作中提到:】
:【 在 wenbobo 的大作中提到:】
::
::任何时候,析构函数都应该是虚函数。我以前贴过这方面的,建议看看C++ Primer。
::【 在 kkcocoon 的大作中提到:】
:::有人说,析构函数一般都应该声明成虚函数,请问高手这合理吗?
:
:......
 


----
掬水月在手
弄花香满身


广州社区嵌入式开发版    广州社区C语言版     我的纯音乐网站

[关闭][返回]