세 클래스가 있습니다. 기본 클래스는 Jet
라고 :생성자 상속 문제
class Jet
{
public :
Jet(int fuel);
void fly();
protected:
int mfuel;
};
Jet::Jet(int fuel): mfuel(fuel) {}
는 두 번째 클래스는 F16
라고 :
class F16 : public Jet
{
public:
F16(int fuel, int numMissiles);
void fireMissile();
protected:
int mNumMissles;
};
F16::F16(int fuel, int numMissiles): Jet(fuel), mNumMissles(numMissiles) {}
의 제 3 유형 B18
이 F16
에서 일반적으로 모든 것을 상속
class B18 : public F16
{
public:
B18(int fuel, int numMissiles, int bullets);
void fireBullets();
private:
int mBullets;
};
지금 내 질문은
입니다 거기에 회원 이니셜 라이저 여기에 방법 :B18::B18(int fuel, int numMissiles, int bullets) :
F16(fuel, numMissiles), mBullets(bullets) {}
... 그래서 난 그냥 B18
에서 int fuel
를 지울 수 있습니다, 단지 F16
에서 numMissiles
을 상속? 예를 들어 위의 같은
B18::B18(int numMissiles, int bullets) :
F16(numMissiles), mBullets(bullets) {}
뭔가 (물론 아마 작동하지 않고 논리적 인 오류가 있습니다).
나는 "smthg"또는 "ofc"를 이해하지 못합니다. 그것들을 완전한 단어로 바꿀 수 있습니까? –
이것이 고의적 인 예라고 생각하지만, 디자인 관점에서 볼 때 'B18'은 'F16'이 아닙니다. 둘 다'Jet'를 상속 받아야합니다. 아마도 당신이 해결하고자하는 진짜 문제를 기술 할 수 있습니다. –
Ofc & Ofcourse, Smthg & something – RedFox