我想制作一个袋子容器。当我超载=
操作员时,超出我的问题就会发生。通过参考传递迷失参数,值
Zsak& Zsak::operator =(const Zsak& a)
{
(*this).V=a.V;
(*this).elemsz=a.elemsz;
return *this;
}
与此头:
class Zsak
{
public:
Zsak(){V=new Elem[100];}
Zsak (const Zsak & a)
{
*this=a;
}
Zsak(int meret)
{
V=new Elem[meret];
}
~Zsak(){delete[] V;}
Zsak& operator -(const Zsak& b);
Zsak& operator =(const Zsak& a);
void Zsak_Ba(int e);
void Zsak_Bol(int e);
bool Uress();
int E_Hany(int e) const;
friend std::ostream& operator << (std::ostream& out,const Zsak& z);
private:
Elem *V;
int elemsz=0;
};
的Zsak_Ba
把一个元件到所述袋;
Zsak_Bol
从包里掏出一个元素;
我通过测试发现的地址是const Zsak a
,地址为*this
。
与此背景下
Zsak z(5),c(5);
z.Zsak_Ba(1);
z.Zsak_Ba(1);
z.Zsak_Ba(1);
z.Zsak_Ba(2);
z.Zsak_Ba(2);
z.Zsak_Ba(2);
z.Zsak_Ba(4);
Zsak d=z;
d.Zsak_Bol(1);
cout<<z<<endl<<d;
它打印:
1 2
2 3
4 1
1 2
2 3
4 1
而且它到底应该打印是:
1 3
2 3
4 1
1 2
2 3
4 1
我应该怎么做来获得这个? 我做错了什么?为什么?
非常感谢!
你只是在这里复制一个指针:'(* this).V = a.V;'。所以现在两个对象指向相同的数据。 – juanchopanza 2014-09-22 12:09:58
如何消除这种情况? – Iero 2014-09-22 12:10:47
将由RHS对象指向的数组的所有元素分配给由LHS对象指向的数组的那些元素。 – juanchopanza 2014-09-22 12:12:02