3个回答
展开全部
如果是初级的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的析构函数。
希望对你有帮助,手工输入,请采纳。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询