kzhereb / knu-is-ooop2019

Materials for "Fundamentals of OOP" course
MIT License
3 stars 0 forks source link

T10.17. Як уникнути дублювання коду в конструкторах? #17

Open WAG13 opened 4 years ago

WAG13 commented 4 years ago

наприклад

class A{
private:
int a;
int b;
public:
A():a(0),b(0) {//...
}
A(int a_):a(a_),b(0) {//...
}
A(int a_, int b_):a(a_),b(b_) {//...
}
}
WAG13 commented 4 years ago

або

class A{
private:
int a;
int b;
public:
A(int a_, int b_):a(a_),b(b_) {//...
}
A(int a_):A(a_,0) {//...
}
A():A(0,0) {//...
}
}
i1red commented 4 years ago

За допомогою делегуючих конструкторів

solovdaria commented 4 years ago

Якщо код дублюється в конструкторах підкласів, то слід створити конструктор в їх суперкласі і винести в нього спільний для підкласів код. Якщо код дублюється в різних конструкторах одного класу, можна використати делегуючи конструктори - це такий ланцюжок конструкторів, де один конструктор викликає інший конструктор.

AntonHladkiy commented 4 years ago

можна винести весь код,який дублюється в спільний конструктор і викликати цей конструктор під час іншого.

RostyslavMV commented 4 years ago

Викликати інший конструктор при виклику даного конструктора або ж якщо потрібна частина коду з іншого конструктора лише за певних умов, то винести цей код в private функцію класу і викликати в конструкторах її.

ilyakorenevskyi commented 4 years ago

Об'єднати спільний для конструкторів код та викликати цей конструктор у іншому