重载=运算符时,应该使一个对象的内容等于另一对象的内容,还是使该对象的指针指向同一对象?
重新阅读该问题,似乎应该复制内容而不是指针。但我只是想不通,因此,如果有人能解释我应该做什么,我知道如何做到这两者,我不确定,我不确定该选择哪个。
class IntObject
{
private:
int *pi_One;
public:
IntObject(void);
IntObject::IntObject(int const &i_one);
~IntObject(void);
IntObject & operator=(const IntObject&);
};
IntObject::IntObject()
{
pi_One = new int(0);
}
IntObject::IntObject(int const &i_one)
{
pi_One = new int(i_one);
}
IntObject::~IntObject(void)
{
delete pi_One;
}
IntObject & IntObject::operator=(const IntObject& c) {
//This copies the pointer to the ints
this->pi_One = c.pi_One;
return *this;
}
最佳答案
这取决于您要在类型中包含的语义。如果要使用值语义,则复制内容(如std::vector
中那样进行深拷贝),如果要使用参考语义(如std::shared_ptr
中那样进行浅拷贝)
关于c++ - C++重载=运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11763554/