说我有三节课:
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{...}
然后,由于小猎犬“是哺乳动物”(相对于孩子不一定是祖父母),我认为它们之间存在某种关系,因此一个(第二派生类)应该能够与祖先课。...不?