1. 基類構造函數負責初始化繼承的數據成員,派生類構造函數主要用於初始化新增的數據成員。
2.C++要求引用和指針類型與賦值的類型匹配,但是這一規則對繼承來說例外。不過這種例外只是單向的,不可以將基類對象和地址賦給派生類引用和指針。
class TableTennisPlayer
{
private:
....
public:
....
}
class RatedPlayer: public TableTennisPlayer
{
private:
...
public:
...
}
可以:
RatedPlayer rplayer(1140,"Malloy","Duck");
TableTennisPlayer & rp=rplayer;
or:
TableTennisPlayer * rp=&rplayer;
不可以:
TableTennisPlay tplayer("","",true);
RatedPlayer & rp=tplayer;
RatedPlayer * rp=tplayer;
3.成員初始化列表
例如:(由逗號分隔初始化列表,前面帶冒號)
Queue:: Queue(int qs): qsize(qs), front(NULL), real(NULL), item(0)
{
}
注意
1.只有構造函數可以使用這種初始化列表句法。
2.對於const類成員,必須使用這種句法,上面例子中,之前我們在Queue類中私有成員中定義了: const int qsize;
3. 對於被申明引用的類成員,必須使用這種句法:
class Agency{...};
class Agent
{
private:
Agency & belong; //引用類型為Agency,
}
cpp:(對構造函數進行初始化)
Agent::Agent(Agency &a ) : belong(a);// 將belong初始化為a,必須采用成員初始化列表。