我正在尝试为我的类 A 创建一个复制构造函数,其中包含 B 类型的指针列表。我尝试这样做的方式如下:
class A
{
private:
list<B*> myList;
list<B*>::iterator iter;
public:
A()
{
}
// Copy constructor
A(const A &src)
{
myList.assign(src.myList.begin(), src.myList.end());
}
A& operator= (const A &src);
};
A& A::operator= (const A &src)
{
// do the copy
myList.assign(src.myList.begin(), src.myList.end());
// return the existing object
return *this;
}
现在,我的问题是,如果我这样做:
A=a1;
//call function that will change a1
A a2(a1);
//call function that will change a1
然后在调用最后一个改变 a1 的函数之后,我注意到 a2 也发生了变化。我认为复制构造函数应该防止这种情况发生,但我无法弄清楚我在代码中做错了什么。