读书人

为何说“如果一个类里有一个抽象方法

发布时间: 2012-08-10 12:19:33 作者: rapoo

为什么说“如果一个类里有一个抽象方法,那它必须还有一个普通的虚方法才行”?
《写给大家看的C++书》中说:
“由于C++用来处理其内部事务(比如哪个虚方法属于哪个对象(使用所谓的vtable表))的方式,如果再某一个类里有一个抽象方法,那它至少还有一个普通的虚方法才行。如果不这么做,编译器或链接器就会给出种种莫名其妙的出错信息。那些出错信息可能非常有误导性,即使很有经验的老手也很难从中看出真正的错误原因”。


现在还是这样吗?

抽象方法:virtual void func()=0;
普通虚方法:virtual void func();

[解决办法]
啊,我被一楼误导了。
我也不记得有这个规定啊

只定义一个纯虚函数VS2010没报错
[解决办法]
鬼扯
这本书可以扔掉了

一个只有纯虚函数的类,没有任何问题

[解决办法]
换点正经书看吧。别浪费生命了。
[解决办法]
纯抽象类,听说过吗?就是只有纯虚函数的类。
所有没有什么必须有一个普通虚函数的说法。
[解决办法]
误导人啊
[解决办法]
换书。
只有纯虚析构函数在定义对象(odr-used)后需要额外定义。
[解决办法]
支持换书

没什么C++基础 C++ primer plus

如果有一定的基础了 可以去掉plus
[解决办法]

探讨
《写给大家看的C++书》中说:
“由于C++用来处理其内部事务(比如哪个虚方法属于哪个对象(使用所谓的vtable表))的方式,如果再某一个类里有一个抽象方法,那它至少还有一个普通的虚方法才行。如果不这么做,编译器或链接器就会给出种种莫名其妙的出错信息。那些出错信息可能非常有误导性,即使很有经验的老手也很难从中看出真正的错误原因”。


现在还是这样吗?

抽象方法:virtual v……

读书人网 >C++

热点推荐