我收到了一些定义如下的各种结构的C ++代码:
typedef struct _someStruct_ {
std::string someString;
std::vector<std::string> someVectorOfStrings;
int someOtherStuff;
~_someStruct_()
{
someString.clear();
someVectorOfStrings.clear();
}
} someStruct;
这里的析构函数是完全多余的吗-如果要通过默认的析构函数对结构进行破坏,则无论如何不会破坏任何字符串,向量等?
如果我编写了代码,就不会在这里添加显式析构函数的想法-我只是让编译器继续进行下去。
据我了解,唯一可能需要在结构中创建自己的析构函数的情况是,结构的任何成员是否包含指向可能需要清除的数据的指针,或者是否具有某些其他功能(例如,用于调试,需要删除一个结构)。
我在这里遗漏了什么吗-为何在析构函数中明确清除了字符串和向量?我的怀疑是发给我这封信的人实际上是一位C程序员(请参阅typedef),他试图将一些C代码转换为C ++。
是的,析构函数是完全多余的。
正如您自己说的那样,代码还有其他警告标志。typedef struct
例如,在C ++中使用毫无意义,它与空析构函数一样多余:该代码是由对C ++不太了解的人编写的,肯定会有更多的陷阱(一方面,类名无效是因为全球范围内领先的下划线)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句