展开全部
如果是初级的C++入门书籍会告诉你,默认的构造和析构函数都是空函数,他不做任何操作。
但实际情况是,严格上来说这句话是错误的。应该分情况讨论如下:
一个类是Plain Old Data类型的,即该类的构造函数和析构函数都是平凡的(trivial的),若该类的默认构造/析构函数存在,则他们是空函数。
2. 如果一个类不满足POD条件,即该类是非平凡的(non-trivial的),则默认析构函数不是空函数,它将是类中非平凡的类成员变量的析构函数的合成函数。(构造函数情况稍微复杂,此处不讨论)
这些概念较深,不理解也没关系。举例如下:
class A
{
A(){printf("A constructor called!\n");}
~A(){printf("A destructor called!\n");}
}
class B
{
A a;
}
void main()
{
if(1)
{
B* b = new B();
}
system("pause");
}
很明显,类B中没有提供析构函数,但是从输出可以看出,main函数类B的实例析构时调用了类A的析构函数。
希望对你有帮助,手工输入,请采纳。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询