Сообщение Re[3]: Адрес конструктора от 14.07.2019 6:18
Изменено 15.07.2019 6:10 rg45
Re[3]: Адрес конструктора
Здравствуйте, jamesq, Вы писали:
J>На мой взгляд, в конструкторах не хватает одной важной возможности. А именно — перед инициализацией полей и вызова конструктора базового класса (это то, что идёт после двоеточия), очень нужно бывает выполнить какой-нибудь код. Вычислить различные величины, например. Чтобы потом их скормить в этой инициализации.
Сейчас это легко делается при помощи делегирующих конструкторов:
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>На мой взгляд, в конструкторах не хватает одной важной возможности. А именно — перед инициализацией полей и вызова конструктора базового класса (это то, что идёт после двоеточия), очень нужно бывает выполнить какой-нибудь код. Вычислить различные величины, например. Чтобы потом их скормить в этой инициализации.
Сейчас это легко делается при помощи делегирующих конструкторов:
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;
};