kzhereb / knu-is-ooop2019

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

T10.18. Як викликати конструктор поля класу? #18

Open WAG13 opened 4 years ago

solovdaria commented 4 years ago

class My { int a, b; public: My() My(int a, int b) { this->a=a; this->b=b; } }:

My obj(2, 3); //викликається конструктор My(int a, int b)

yanaskyrda commented 4 years ago

При виклику конструктора класу викликається конструктори всіх полів. В дефолтному конструкторі викликаються дефолтні конструктори полів. Ми можемо явно викликати конструктор полів.

class A {
    std::vector<std::string> data;
private:
    A (int size = 0) : data(size, "example") {}
}

В даному прикладі ми явно викликаємо конструктор вектора.

AntonHladkiy commented 4 years ago

наприклад class A{ int a; public: A():a(10){} }

RostyslavMV commented 4 years ago

class A { int value; public: A():a(7) {} } Тобто в конструкторі класу викликати конструктор для поля класу

i1red commented 4 years ago

Як делегуючий конструктор class Student { std::string name; Student(name): name(name) { } }

ilyakorenevskyi commented 4 years ago

сlass A { int a, b; A(a, b) : a(a), b(b) { } }

WAG13 commented 4 years ago

Делегуючі конструктори

class Point{
int x;
int y;
public:
Point():x(0),y(0){}
Point(int x, int y):x(x),y(y){}
}