Class Cents(){
int m_val;
public:
Cents(int x=0){ cout<<"Constructor";}
Cents(const Cents& src){ cout<<"Copy constructor"}
Cents Add(int val){m_val=val; return *this} // --->(1)
}
Cents object obj
私が持っていて電話していると仮定しますobj.Add()
これで、出力は次のようになります
コンストラクタ
コピーコンストラクタ
したがって、私の仮定は、(1) を返すことで、オブジェクト値を新しい一時的な Cents オブジェクトに*this
コピーしていることです。*this
そのため、コピー コンストラクターが呼び出されます。
行(1)を次のように置き換えると
Cents Add(int val){ Cents temp;return temp;} // --->(2)
唯一の出力は
コンストラクタ
コピーコンストラクターが呼び出されないのはなぜですか? 行(1)についての私の仮定は間違っていますか?