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

Ram*_*lol 17 c++ destructor

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

Pab*_*ruz 30

C++中struct,a class与a 完全相同,但成员和基础的默认可见性除外.因此,如果有一种"破坏"类的方法,您可以使用完全相同的方法来"破坏"一个结构.

所以,如果你struct s { }的C++程序中有一个,你可以这样做:

s *v = new s();
delete v; // will call structure's destructor.
Run Code Online (Sandbox Code Playgroud)

  • 或者只是让对象超出范围将调用析构函数. (11认同)
  • @Mark:的确如此.如果您使用`new`创建了对象,则使用`delete`将其销毁,或者如果您明智的话,将其分配给智能指针以便为您处理.如果您自动创建了对象,则会让它自动超出范围.如果你调用了原始位置的原始功能来从原始位伪造对象,那么你调用析构函数将其强制转换回深渊 - 但通常你不想这样做. (7认同)
  • @Martin:但让对象指针超出范围却没有.区分是很重要的.在这个例子中,它是一个指针. (6认同)

Aru*_*run 9

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


Mar*_*ram 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;
Run Code Online (Sandbox Code Playgroud)