【发布时间】:2013-11-18 20:57:15
【问题描述】:
为什么下面程序的输出是200-200?这里只是改变object2成员变量的值。
class X
{
private:
int *m_plnt;
public:
X():m_plnt(new int()){}
X(const X & rhs)
{
m_plnt = rhs.m_plnt;
}
void setvalue(int value) { *m_plnt = value; }
int getvalue(){return *m_plnt;}
};
int main()
{
X obj1;
obj1.setvalue(100);
X obj2(obj1);
obj2.setvalue(200); // how its changing obj1.m_plnt value
return 0;
}
【问题讨论】:
-
你了解什么是指针以及它们是如何工作的吗?
-
因为您将其值设置为 200?你还需要一个析构函数来删除你的指针
-
看看 C 指针示例。这应该澄清它
标签: c++ oop c++11 copy-constructor assignment-operator