一、派生类指针指向父类时父类的虚构函数必须设置为虚函数
看下面的代码,其中基类的析构函数并没有设置为虚函数
class Data
{
public:
Data(int data)
{
a = data;
cout << "Data构造" << endl;
}
~Data()
{
cout << "~Data析构" << endl;
}
private:
int a;
};
class Base
{
public:
Base()
{
cout << "Base构造" << endl;
}
~Base()
{
cout << "~Base析构" << endl;
}
};
class Derived : public Base
{
public:
Derived(int data):m_data(data)
{
cout << "Derived构造" << endl;
}
~Derived()
{
cout << "~Derived析构" << endl;
}
private:
Data m_data;
};
int main()
{
Base *p = new Derived(10);
delete p;
system("pause")

本文探讨了C++中虚析构函数的重要性,当派生类指针指向父类对象时,非虚析构函数将导致无法正确调用派生类的析构。同时,文章对比了成员变量为指针和普通数据成员在析构时的区别,强调指针成员在析构时需手动释放以避免内存泄露,并提醒在处理包含指针的类时要注意拷贝构造和赋值运算符的正确实现。
最低0.47元/天 解锁文章
2031

被折叠的 条评论
为什么被折叠?



