Поведение конструктора C ++ - PullRequest
1 голос
/ 21 апреля 2010

Я объявляю экземпляр класса следующим образом:

Matrix m;

Это, кажется, неявно инициализирует m (то есть запускает конструктор). Это действительно так?

Ответы [ 3 ]

8 голосов
/ 21 апреля 2010

Да, конструктор по умолчанию вызывается.

Если конструктор по умолчанию отсутствует, этот оператор некорректен. Если пользовательских конструкторов нет, компилятор предоставляет конструктор по умолчанию.

0 голосов
/ 21 апреля 2010

Да, он создает экземпляр класса Matrix в стеке. Этот экземпляр инициализируется с помощью конструктора по умолчанию класса Matrix. Этот экземпляр, созданный в стеке, будет уничтожен, когда переменная m выйдет из области видимости. Когда объект будет уничтожен, будет вызван его деструктор.

0 голосов
/ 21 апреля 2010

Да, синтаксически это равносильно записи:

Matrix m();

Хотя, если конструктор по умолчанию не определен, компилятор выдаст ошибку.

ПРИМЕЧАНИЕ. Если для класса не определены конструкторы, конструктор по умолчанию создает конструктор, но если определяется конструктор с параметрами, конструктор по умолчанию НЕ создается компилятором.

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