【发布时间】:2014-03-16 18:46:29
【问题描述】:
假设我有一个包含动态分配成员的类,如下所示:
class example
{
private:
otherClass * pointer;
public:
example(int foo){ pointer = new otherClass(foo); }
~example(){delete pointer;}
};
//defining template parameter
example template(1);
现在假设我想将该模板对象动态 push_back 到一个向量中,如下所示:
std::vector<example> myVector;
for(int i=0; i<5; i++)
myVector.push_back(template);
myVector.erase(myVector.begin());
我的问题是:如何准备类来处理动态分配的指针?我知道我需要重载复制构造函数,但我还需要重载复制赋值吗?那么移动构造器或移动分配呢?还有其他我忘记的预防措施吗?
【问题讨论】:
-
我建议您为该类选择另一个名称,因为它可能与 C++ 模板混淆。
-
根据您的用例查看 shared_ptr 或 unique_ptr。
-
你必须让你的班级关注the rule of three,或者设计成不需要直接进行资源管理的方式。
-
template是关键字,因此实际上尝试将其用作标识符是非法的。