首页技术析构函数名与类名完全相同(析构函数的类型是void)

析构函数名与类名完全相同(析构函数的类型是void)

编程之家2026-06-15796次浏览

今天给各位分享析构函数名与类名完全相同的知识,其中也会对析构函数的类型是void进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

析构函数名与类名完全相同(析构函数的类型是void)

C++类的问题,构造函数和析构函数

newD(1,2,3);

执行D的构造函数,由于他是以初始化表的形式出现的,同时D继承自C:

D(inti,intj,intk):a(i),b(j),C(k){cout<<"D";}

依次进行初始化

C(k)------>调用类C的构造函数C(intk){cout<<"C";}----->输出字符C

a(i)------->a是A类的对象引用,调用类A的构造函数A(inti){cout<<"A";}------>输出字符A

析构函数名与类名完全相同(析构函数的类型是void)

b(j)------->b是B类的对象引用,调用类B的构造函数B(intj){cout<<"B";}------->输出字符B

cout<<"D";------------------------------------------------------->输出字符D

deletepc;------>注意pc的声明:C*pc,他是指向C类对象的指针,delete应该调C类的析构函数

所以最后输出:~C

合在一起就是:CABD~C

C++,关于析构函数

1,在销毁对象的时候,执行它。

析构函数名与类名完全相同(析构函数的类型是void)

析构函数是“反向”的构造函数。它们在对象被撤消(回收)时调用。析构函数的名

称除了最前面的“~”符号外,与类的名称相同。例如,类String的析构函数是~string()。

析构函数通常用于当一个对象不再需要时,完成“消除”功能。

在函数中建立对象之后,这个对象作为局部对象开始生存,直到函数运行到遇见右括号“}”才结束生存,此时调用析构函数。

对象的释放发生在以下几种情况,首发自学编程网:

·使用运算符new分配的对象被delete删除。

·一个具有块作用域的本地(自动)对象超出其作用域。

·临时对象的生存期结束。

·程序结束运行。

·使用完全限定名显示调用对象的析构函数。

有几条规则约束着析构函数的说明:

·不能接受参量。

·不能说明有任何返回类型(包括void)。

·不能用return语句返回值。

·不能说明为const、volatile或static,但析构函数可以因说明为const、volatile或static的对象的析构而被调用。

·可以说明为虚拟的。使用虚析构函数,可以撤消对象而不必知道该对象的类型。由于使用虚拟函数机制,程序将调用该对象的正确的析构函数。

关于c++派生类构造函数和析构函数的说法

D是错的,应该是在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数.

这跟盖房拆房一个道理,盖时肯定要先盖基础(相当于建立时先调用基类),再盖上面(再调用派生类)

拆房时,肯定很从上面拆(先调用派生类的析构函数),再拆下面(再调用基类的析构函数)

其实上面只有简单的解释,上面的调用是因为,若你先调用基类的析构函数,会把派生类正在用的一次资源销毁,因为此时派生类还没有被销毁,所以肯定会出现问题。

好了,文章到这里就结束啦,如果本次分享的析构函数名与类名完全相同和析构函数的类型是void问题对您有所帮助,还望关注下本站哦!

大数据分析(免费查询大数据平台)label标签 标签的定义