【发布时间】:2014-05-05 09:46:53
【问题描述】:
我有一个类,它有几个 int 和一个 const int 成员,并定义了一个构造函数。
class SomeContainer
{
public:
SomeContainer():
member1(0),
member2(staticMethod())
{}
private:
static int staticMethod();
int member1;
const int member2;
}
我需要创建一个赋值运算符,因为我在另一个类 MainClass 和代码中使用了这个类
MainClass* p1;
MainClass* p2
{
//...
*p1 = *p2 // fails since SomeContainer doesn't have copy assignment operator
}
这段代码应该够用还是我遗漏了什么?
{
SomeContainer(const SomeContainer& other): // copy ctor
member1(other.member1),
member2(other.member2)
{}
SomeContainer& operator=(const SomeContainer& other) // assignment operator
{
member1 = other.member1;
}
}
move ctor 和 move assignment 怎么样?我是否也需要实施这些?
【问题讨论】:
-
p1 = p2;与类的复制赋值运算符无关。这些是指针。 -
大概你的意思是
*p1 = *p2? -
@0x499602D2:如果他想要复制,他就会这样做,因为
const成员意味着不存在默认的赋值语义。 -
@LightnessRacesinOrbit 是的,我的意思是 *p1 = *p2。谢谢
标签: c++ copy-constructor assignment-operator