c++ - 在什么情况下我必须为我的 C++ 类提供赋值运算符、复制构造函数和析构函数?

标签 c++ destructor copy-constructor assignment-operator

假设我有一个类,其中唯一的数据成员类似于 std::stringstd::vector。是否需要提供复制构造函数、析构函数和赋值运算符?

最佳答案

如果您的类仅包含 vector/字符串对象作为其数据成员,则无需实现这些。 C++ STL 类(如 vector 、字符串)具有自己的复制 ctor、重载赋值运算符和析构函数。

但如果你的类在构造函数中动态分配内存,那么简单的浅拷贝就会导致麻烦。在这种情况下,您必须实现复制 ctor、重载赋值运算符和析构函数。

关于c++ - 在什么情况下我必须为我的 C++ 类提供赋值运算符、复制构造函数和析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386231/

相关文章:

c++ - 如何使用open62541同时使用OPC-UA写入多个节点?

按值返回中的 C++ 复制构造函数激活

C++ 构造函数调用和对象创建

c++ - 内存对齐、结构和 malloc

C++ 交叉包含——这正常吗?

c++ - 奇怪的重复模式和 Sfinae

C++ 变量不会在范围末尾被删除

c++ - 二叉搜索树代码

c++ - 安全放置新的和显式的析构函数调用

c++ - 按值赋值运算符不使用显式复制构造函数编译