我想製作一個袋子容器。當我超載=
操作員時,超出我的問題就會發生。通過參考傳遞迷失參數,值
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