一、構造
構造函數不能為虛函數
派生類要先調用基類的構造函數,而不能直接覆蓋基類的構造函數。
所以在派生類不能再成員初始化列表中初始化基類的成員
見如下例子:
[cpp]
01.class Base
02. {
03. public:
04. Base(double dNum)
05. : nBase(1)
06. , dBase(dNum)
07. {
08.
09. }
10. int ShowNum(){return nBase;}
11. protected:
12. int nBase;
13. double dBase;
14. private:
15. };
16.
17.
18. class Derived : public Base
19. {
20.
21. public:
22. Derived(double dNum)
23. : Base(dNum)
24. , nBase(3)
25. {
26. nBase = 2;
27. }
28. protected:
29. private:
30. };
class Base
{
public:
Base(double dNum)
: nBase(1)
, dBase(dNum)
{
}
int ShowNum(){return nBase;}
protected:
int nBase;
double dBase;
private:
};
class Derived : public Base
{
public:
Derived(double dNum)
: Base(dNum)
, nBase(3)
{
nBase = 2;
}
protected:
private:
};
會在,nBase(3)處報錯 error C2614: “Derived”: 非法的成員初始化:“nBase”不是基或成員