有没有办法破坏结构(不是一个类)?
答案 0 :(得分:30)
在 C ++ 中,struct
与class
完全相同,但成员和基础的默认可见性除外。因此,如果有一种“破坏”类的方法,你可以使用完全相同的方法来“破坏”一个结构。
因此,如果您的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 ++中,结构体并不比类强大。