суббота, 10 декабря 2011 г.

Порядок выполнения конструктора и деструктора

Рассмотрим порядок выполнения конструктора и деструктора при создании простого объекта.

#include <iostream>
using namespace std;

class myclass
{
public:
    myclass() { cout << "Constructor " << endl; }
    ~myclass() { cout << "Destructor " << endl; }
};

int main(int argc, char *argv[])
{
    myclass a;
    return 0;
}
Вывод:
Constructor
Destructor
Как наглядно показано выше, в момент создания объекта класса myclass, вызывается его конструктор. В конце программы, по завершению функции main уничтожаются все локальные переменные и объекты. Так, при уничтожении объекта, вызывается его метод деструктора.


Так как переменная разрушается при выходе из блока её видимости, то в следующем примере сначала будет разрушена переменная b, а потом уже a:
#include <iostream>
using namespace std;

class myclass
{
    int m_i;
public:
    myclass(int i=0) {
        m_i = i;
        cout << "Constructor " << m_i << endl;
    }
    ~myclass() { cout << "Destructor " << m_i << endl; }
};

int main(int argc, char *argv[])
{
    myclass a(1);
    {
        myclass b(2);
    }
    return 0;
}
Вывод:
Constructor 1
Constructor 2
Destructor 2
Destructor 1


Смотрите также:
Порядок выполнения конструктора и деструктора при наследовании

Комментариев нет:

Отправить комментарий