C ++ - члены класса, когда Destructor вызывается во время перезаписи - PullRequest
0 голосов
/ 24 октября 2011

я пытаюсь понять порядок вызовов конструктора и деструктора при перезаписи объекта.

Мой код:

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

-

ПочемуA :: xx = 14 когда вызывается деструктор?Разве это не должно быть 11?

1 Ответ

2 голосов
/ 24 октября 2011

Почему это должно быть 11?Вы переназначаете z на A(14), поэтому в конце равно 14.

(После редактирования: вы также видите деструктор временного объекта A(14), который уничтожается в конце задания.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...