8
の私はoperator int()
が呼び出さ代わりに定義されたoperator+
C++()の代わりに演算子+
class D {
public:
int x;
D(){cout<<"default D\n";}
D(int i){ cout<<"int Ctor D\n";x=i;}
D operator+(D& ot){ cout<<"OP+\n"; return D(x+ot.x);}
operator int(){cout<<"operator int\n";return x;}
~D(){cout<<"D Dtor "<<x<<"\n";}
};
void main()
{
cout<<D(1)+D(2)<<"\n";
system("pause");
}
私の出力がされた理由を理解しようとしています:
int Ctor D
int Ctor D
operator int
operator int
3
D Dtor 2
D Dtor 1
あなたの*質問*は何ですか? – MikeCAT
@MikeCATこれは最初の行です。不明な点は何ですか? – Rotem
'operator int()'を削除すると、その理由がわかるでしょう。少なくとも、ほとんどのコンパイラとそのデフォルトオプションを使ってください。 – chris