首页 > 试题广场 >

在 C++中,能否声明虚构造函数?为什么?能否声明虚析构函

[问答题]

C++中,能否声明虚构造函数?为什么?能否声明虚析构函数?有何用途?

推荐

解:在 C++中,不能声明虚构造函数,多态是不同的对象对同一消息有不同的行为特性,虚函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此虚构造函数是没有意义的;可以声明虚析构函数,析构函数的功能是在该类对象消亡之前进行一些必要的清理工作,如果一个类的析构函数是虚函数,那么,由它派生而来的所有子类的析构函数也是虚函数。析构函数设置为虚函数之后,在使用指针引用时可以动态联编,实现运行时的多态,保证使用基类的指针就能够调用适当的析构函数针对不同的对象进行清 理工作。

编辑于 2018-04-18 20:36:44 回复(0)
构造函数不能为虚函数:虚函数对应虚函数表,而虚函数表在构造函数中创建。构造函数为虚函数时,虚函数表又这么会存在呢?鸡生蛋,蛋生鸡了。
析构函数一般为虚函数:防止内存泄漏;
发表于 2018-12-02 14:35:58 回复(0)