热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

虚函数的常见问题

1)虚函数是动态绑定的,也就是说,使用虚函数的指针和引用能够正确找到实际类的对应函数,而不是执行定义类的函数。这是虚函数的基本功能,就不再解释了。2)构造函数不能是虚函数
1) 虚函数是动态绑定的,也就是说,使用虚函数的指针和引用能够正确找到实际类的对应函数,而不是执行定义类的函数。这是虚函数的基本功能,就不再解释了。 

2)  构造函数不能是虚函数 。而且, 在构造函数中调用虚函数,实际执行的是父类的对应函数 ,因为自己还没有构造好, 多态是被disable的。 

3)  析构函数可以是虚函数 ,而且,在一个复杂类结构中,这往往是必须的。
 
4) 将一个函数定义为纯虚函数,实际上是将这个类定义为抽象类,不能实例化对象。 

5)  纯虚函数通常没有定义体,但也完全可以拥有

6)  析构函数可以是纯虚的,但 纯虚析构函数必须有定义体 ,因为析构函数的调用是在子类中隐含的。 

7) 非纯的虚函数必须有定义体,不然是一个错误。 

8) 派生类的override虚函数定义必须和父类完全一致。 除了一个特例,如果父类中返回值是一个指针或引用,子类override时可以返回这个指针(或引用)的派生 。例如,在上面的例子中,在Base中定义了 virtual Base* clone(); 在Derived中可以定义为 virtual Derived* clone()。可以看到,这种放松对于Clone模式是非常有用的。 

推荐阅读
author-avatar
Ajax
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有