jje*_*rms 18 c++ destructor copy-constructor assignment-operator
假设我有一个类,其中唯一的数据成员是std::string或类似的std::vector.我是否需要提供复制构造函数,析构函数和赋值运算符?
cod*_*ict 13
如果您的类仅包含矢量/字符串对象作为其数据成员,则无需实现这些.C++ STL类(如vector,string)有自己的copy ctor,重载赋值运算符和析构函数.
但是如果你的类在构造函数中动态分配内存,那么一个天真的浅拷贝将导致麻烦.在这种情况下,您将必须实现copy ctor,重载赋值运算符和析构函数.
通常的经验法则是:如果你需要其中一个,那么你需要它们.
但是,并非所有课程都需要它们.如果你的班级没有资源(记忆,最值得注意的是),没有它们你就没事了.例如,具有单个string或vector成分的类并不真正需要它们 - 除非您需要一些特殊的复制行为(默认只会复制成员).
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |