0
オブジェクトを上書きするときにConstructorとDestructorの呼び出しの順序を理解しようとしています。C++ - 上書き時にデストラクタが呼び出されたときのクラスメンバ
私のコードは次のとおり
class A
{
public:
A(int n): x(n)
{ cout << "A(int " << n << ") called" << endl; }
~A()
{ cout << "~A() with A::x = " << x << endl; }
private:
int x;
};
int main()
{
cout << "enter main\n";
int x = 14;
A z(11);
z = A(x);
cout << "exit main" << endl;
}
-
出力である:
enter main
A(int 11) called
A(int 14) called
~A() with A::xx = 14
exit main
~A() with A::xx = 14
- デストラクタがある場合
なぜ:: XX = 14でありますと呼ばれる?それは11ではありませんか?
しかし、xの最初の印刷は、デストラクタ中に起こる最初のインスタンスの場合はそうAはまだ破壊されていませんが、xはまだ存在してはいけません11 – pulekies
各オブジェクトはメンバ変数の別のコピーを保持しています。あなたは、標準的なメンバである参照または静的なメンバを持っていません。 –
'A :: xx = 14 'を持つ最初の'〜A() 'は、' z'を14に変更し終わったので一時的なデストラクタです。そして、 'z'は主に終了し、' z'は破壊され、 〜A()とA :: xx = 14 ' –