您的位置:首页 > 编程语言 > C语言/C++

C++中的虚函数问题

2016-03-23 11:00 246 查看
1. 构造函数中可以调用虚函数吗

可以,只是不会产生动态行为,因为构造函数是从基类开始构造,基类在调用虚函数时,子类还未构造,所以调用的是基类的函数。

2.析构函数可以调用虚函数吗

如果在父类析构函数中调用虚函数,其实际调用的是子类的函数,而此时子类析构函数已经把数据销毁了,会出现不可知的结果。

3.析构函数可以调用纯虚函数吗

不可以,编译会出错。

5.析构函数可以是纯虚函数吗

可以,但是基类必须提供该析构函数的定义,此时基类是抽象类。抽象类的纯虚函数必须由派生类实现,除析构函数可以自身定义外。

6.普通成员函数可以调用虚函数吗

可以,如果基类和子类普通成员函数完全相同,子类会隐藏基类的成员函数,产生动态行为。

总结:C++动态绑定机制仅适用于完全构造的对象,构造和析构函数一样,对象不完整。 如果在部分构造的函数对象上动态绑定,行为很怪异(与实现有关)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: