我可以用C ++破坏结构吗?

时间:2010-08-17 20:03:28

标签: c++ destructor

有没有办法破坏结构(不是一个类)?

4 个答案:

答案 0 :(得分:30)

C ++ 中,structclass完全相同,但成员和基础的默认可见性除外。因此,如果有一种“破坏”类的方法,你可以使用完全相同的方法来“破坏”一个结构。

因此,如果您的C ++程序中有struct s { },则可以执行此操作:

s *v = new s();
delete v; // will call structure's destructor.

答案 1 :(得分:9)

除了默认访问说明符(类的“私有”,struct的“public”)之外,C ++类和结构中的所有其他内容都是相同的。所以,是的,你可以像在类中一样在struct中编写和使用析构函数。

答案 2 :(得分:5)

除了默认的可见性和继承是公共的(而不是私有的)之外,结构与类相同。

所以你可以像这样创建和销毁结构(与类相同或内置类型):

// Create on the heap, need to manually delete.
MyStruct *const pStruct = new MyStruct();
delete pStruct;

// Created on the stack, automatically deleted for you.
MyStruct struct;

答案 3 :(得分:2)

结构和类是相同的,只有技术差异(默认的访问字段),这是由于两者之间的概念差异而发生的。但是,每个像类一样的结构在必须创建对象时调用它的构造函数,并在其可见性字段结束时调用它的析构函数。

在C ++中,结构体并不比类强大。