Exceptional C++ Style之18

来源:互联网 发布:小智淘宝店 编辑:程序博客网 时间:2024/05/07 20:58
第18条 虚拟
       虚拟也许是C++区别C的一个最显著特征之一。和模板不同,虚拟是需要带来运行期消耗的,具体原理参见《Inside C++ Object Model》。但是付出的代价表明,这个特性是绝对值得付出的。
       我们的设计通常是这样的,在一个基类中定义一些接口,这些接口都是虚拟的。期待派生类来进行实现,但是这个地方Sutter给出一个原则,在这个基础上更进一步。Sutter认为,尽量将接口设计为非虚,而尽量将虚函数设置为私有的。当且仅当派生类需要调用基类的虚函数的时候,才将虚函数置为保护的。而基类的析构函数要么应当为公有虚函数,要么应当为保护的非虚函数。
       在这个地方,似乎C++是先检查访问权限,再去查找虚函数的table,找到实际函数的指针。
原创粉丝点击