Использование конструктора - PullRequest
0 голосов
/ 03 февраля 2020

конструкторы используются для инициализации полей (атрибутов) после создания объектов, верно? и память не выделяет места для кода класса перед созданием экземпляра. так что нечего инициализировать.

так как приведенный ниже код печатает num со значением 12, а функции конструктора нет?

#include<iostream>
using namespace std;
class My_Class{
    public:
    int num =12;
};
int main(){
    My_Class Hello;
    cout<<Hello.num;
}

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

My_Class имеет неявно определенный конструктор по умолчанию , который устанавливает num == 12, как указано инициализатором члена по умолчанию

0 голосов
/ 03 февраля 2020

В C ++ 11 вы можете указать инициализирующее значение в объявлении для нестабильных c переменных-членов, как вы делаете с int num = 12. Этот num(12) неявно добавляется в список инициализации конструктора по умолчанию. Другими словами, это было бы так же, как если бы вы написали:

My_Class() : num(12) {}

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

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