Информация об изменениях

Сообщение Re[3]: Адрес конструктора от 14.07.2019 6:18

Изменено 15.07.2019 6:10 rg45

Re[3]: Адрес конструктора
Здравствуйте, jamesq, Вы писали:

J>На мой взгляд, в конструкторах не хватает одной важной возможности. А именно — перед инициализацией полей и вызова конструктора базового класса (это то, что идёт после двоеточия), очень нужно бывает выполнить какой-нибудь код. Вычислить различные величины, например. Чтобы потом их скормить в этой инициализации.


Сейчас это легко делается при помощи делегирующих конструкторов:

class A
{
public:
  A(int a, int b) : A(a, b, double(a - b)/(a + b)) {}

private:

  A(int a, int b, double x) : a(a), b(b), c(x * 10), d(x * 20) {}

  int a;
  int b;
  double c;
  double d;   
};
Re[3]: Адрес конструктора
Здравствуйте, jamesq, Вы писали:

J>На мой взгляд, в конструкторах не хватает одной важной возможности. А именно — перед инициализацией полей и вызова конструктора базового класса (это то, что идёт после двоеточия), очень нужно бывает выполнить какой-нибудь код. Вычислить различные величины, например. Чтобы потом их скормить в этой инициализации.


Сейчас это легко делается при помощи делегирующих конструкторов:

class A
{
public:
  A(int a, int b) : A(a, b, double(a - b)/(a + b)) {}

private:

  A(int a, int b, double x) : a(a), b(b), c(x - 10), d(x * 20) {}

  int a;
  int b;
  double c;
  double d;   
};