вызов функции базового класса в конструкторе производного класса - PullRequest
1 голос
/ 08 мая 2019

Я знаю, что можно вызывать функцию базового класса в конструкторе производного класса, потому что базовый класс создается перед производным классом. Но я не уверен, что это хорошая практика. Пример кода:

class Base {
 public:
  int Get() const { return i_; }
  void Set(const int i) { i_ = i; }

 private:
  int i_{0};
};

class Derived : public Base {
  // initialize `derived_i_` with a call to base class function, Is this a good
  // practice in production code?
  Derived() : derived_i_{Get()} {
    // do some other things
  }

 private:
  int derived_i_{0};
};

1 Ответ

1 голос
/ 08 мая 2019

Чтобы быть более педантичным, вы могли бы написать свой конструктор следующим образом:

Derived() : Base(), derived_i_{Get()} {
  // do some other things
}

Компилятор должен полностью создать базовый класс перед любой инициализацией производного класса.

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