cleverer wäre es in der Basisklasse nur eine virtuelle Funktion zu
definieren und in der Ableitung eine entsprechende Implementierung
bereitzustellen.
1 | class BasisCar{
|
2 | public:
|
3 | virtual int getDoorCount()const = 0;
|
4 |
|
5 | };
|
6 |
|
7 | class PKW: public BasisCar
|
8 | {
|
9 | public:
|
10 | int getDoorCount()const { return 4;}
|
11 | }
|
12 |
|
13 | class LKW: public BasisCar
|
14 | {
|
15 | public:
|
16 | int getDoorCount()const { return 2;}
|
17 | }
|
alternativ könnte man sowas machen, fände ich besser:
1 | class BasisCar{
|
2 |
|
3 | public:
|
4 | int getDoorCount(){ return m_doorCount;}
|
5 |
|
6 | BasisCar(int doors = 1)
|
7 | : m_doorCount(doors)
|
8 | {}
|
9 |
|
10 | protected:
|
11 | int m_doorCount;
|
12 |
|
13 | };
|
14 |
|
15 | class PKW: public BasisCar
|
16 | {
|
17 | public:
|
18 | PKW()
|
19 | : BasisCar(4)
|
20 | {}
|
21 | }
|
22 |
|
23 | class LKW: public BasisCar
|
24 | {
|
25 | public:
|
26 | LKW()
|
27 | : BasisCar(2)
|
28 | {}
|
29 | }
|
Wobei ich die Türanzahl jetzt nicht so geeignet für dieses Beispiel
finden.