Что означает двоеточие в конструкторе? [duplicate]

6
задан Community 23 May 2017 в 12:29
поделиться

3 ответа

Это способ инициализировать поля-члены класса до фактического вызова c'tor класса.

Предположим, у вас есть:

class A {

  private:
        B b;
  public:
        A() {
          //Using b here means that B has to have default c'tor
          //and default c'tor of B being called
       }
}

Итак, теперь, написав:

class A {

  private:
        B b;
  public:
        A( B _b): b(_b) {
          // Now copy c'tor of B is called, hence you initialize you
          // private field by copy of parameter _b
       }
}
5
ответ дан 9 December 2019 в 20:38
поделиться

Это список инициализации членов.

Вы устанавливаете для каждой из переменных-членов значения в скобках в части после двоеточия.

4
ответ дан 9 December 2019 в 20:38
поделиться

Как и многие другие вещи в C ++, : используется для многих вещей, но в вашем если это начало списка инициализаторов.

Другие варианты использования, например, после публичного / частного / защищенного, после метки case, как часть тернарного оператора и, возможно, некоторые другие.

3
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: