"this"ポインタの操作でコンストラクタが呼び出されますか?*これはコンストラクタを呼び出しますか?
私は*this = *this + 1
ようないくつかの操作をしていた場合、私は今のようにかなった...
Cents c;
cout<<"Before post incrementing\n";
c++; //This part is calling the constructor thrice
を持っている主な機能に
Cents(int cents)
{
cout<<"in cents constructor\n";
m_cents = cents;
}
friend Cents operator + (const Cents &c1, const Cents &c2)
{
return Cents(c1.m_cents + c2.m_cents);
}
Cents operator ++ (int)
{
cout<<"In c++ function\n";
Cents c(m_cents);
*this = *this + 1 ;
return c;
}
を次のように定義されたコンストラクタを持っています。 このコンストラクタを2回呼び出します。
ここでは正確に何が起こっているのですか? *this
は一時オブジェクトを作成し、その値を元のオブジェクトに割り当てますか?
コードをさらに表示してください。コピーコンストラクタと代入演算子が定義されていますか? –
@RafałRawicki....いいえコピーコンストラクタや代入演算子は定義されていません。 –
完全な例を投稿できますか? http://sscce.orgを参照してください。私は、この式ではCentsコンストラクタを一度呼び出す必要があります。 –