添付のプログラムでコピーコンストラクタの部分がないとエラーになると授業で習ったのですが,見た感じはコピーコンストラクタがいらなくても別に異常なく動作するように感じます.
なぜなら
ex1:
CLASS ob1; CLASS ob2 = ob1;というようなコピーコンストラクタを用いた操作をplus関数内で行っていないからです.また,main関数内での代入演算子がex1の様な動作をしているのかと調べてみてもoperator=が動いてるだけでコピーコンストラクタではありませんでした.
コピーコンストラクタがplus(stack s1, stack s2)の引数に使われているのは理解しています.plus関数の引数以外でコピーコンストラクタがどこで効いてくるのでしょうか?
stack(int sz)0xbfde5304
stack(int sz)0xbfde52f8
stack(int sz)0xbfde52ec
------------
stack(const stack& s)0xbfde52d4
stack(const stack& s)0xbfde52e0
stack(int sz)0xbfde5284
stack(int sz)0xbfde52c8
~stack()0xbfde5284
operator=(const stack& s)0xbfde52ec
~stack()0xbfde52c8
~stack()0xbfde52e0
~stack()0xbfde52d4
max=5, sp=3, data=(1 3 5 )
max=5, sp=3, data=(2 4 6 )
max=10, sp=6, data=(1 3 5 2 4 6 )
~stack()0xbfde52ec
~stack()0xbfde52f8
~stack()0xbfde5304