Скажем, у меня есть три класса:
class Grandparent {
private:
int gi;
float gf;
public:
Grandparent(int i1, float f1) : gi(i1), gf(f1) {}
}
class Parent : public Grandparent {
private:
int pi;
float pf;
public:
Parent(int i1, float f1, int i2, float f2) : Grandparent(i1, f1), pi(i2), pf(f2) {}
}
class Child : public Parent {
private:
int ci;
float cf;
public:
Child(int i1, float f1, int i2, float f2, int i3, float f3) :
Parent(i1, f1, i2, f2), ci(i3), cf(f3) {}
}
Есть ли способ инициализации бабушки и дедушки изнутри ребенка?
Я предполагаю, что если бы я написал
Child(int i1, float f1, int i2, float f2, int i3, float f3) :
Grandparent(i1, f1), ci(i3), cf(f3) {}
, то это не сработало бы, потому что нигде я не инициализировал объект Parent (если это не так, или если есть что-то еще,пожалуйста, дай мне знать).
Однако, если я думаю о производных классах более абстрактно, таких как
class Mammal{...}
class Dog: public Mammal{...}
class Beagle: public Dog{...}
, то, поскольку бигль "является млекопитающим" (в отличие от ребенка не обязательно является прародителем),Я бы предположил, что между ними есть связь, так что один (второй производный класс) должен иметь возможность общаться с классом предка .... Нет?