C ++中的虚拟构造函数
仅当我们具有指向派生类对象的基类指针时,虚拟机制才起作用。
在C ++中,构造函数不能是虚拟的,因为执行类的构造函数时,内存中没有虚拟表,这意味着尚未定义虚拟指针。因此,构造函数应始终是非虚拟的。
但是虚拟析构函数是可能的。
范例程式码
#include<iostream>using namespace std;
class b {
public:
b() {
cout<<"Constructing base \n";
}
virtual ~b() {
cout<<"Destructing base \n";
}
};
class d: public b {
public:
d() {
cout<<"Constructing derived \n";
}
~d() {
cout<<"Destructing derived \n";
}
};
int main(void) {
d *derived = new d();
b *bptr = derived;
delete bptr;
return 0;
}
输出结果
Constructing baseConstructing derived
Destructing derived
Destructing base
以上是 C ++中的虚拟构造函数 的全部内容, 来源链接: utcz.com/z/316888.html