C++中的虚函数问题

来源:互联网 发布:拳击直播软件 编辑:程序博客网 时间:2024/06/16 19:26

1. 构造函数中可以调用虚函数吗

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

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

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

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

不可以,编译会出错。

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

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

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

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


总结:C++动态绑定机制仅适用于完全构造的对象,构造和析构函数一样,对象不完整。 如果在部分构造的函数对象上动态绑定,行为很怪异(与实现有关)

0 0
原创粉丝点击