class men:public human
{
};
以上為繼承方式,men是human的子類
當建立子類對象時,先調用父類的構造函數,再調用子類的構造函數
public:所有實體均可通路其成員變量和函數
protected:本類和子類可在成員函數中通路其成員變量和成員函數
private:隻有本類的成員函數可通路其成員變量和成員函數
子類繼承得到的對于父類成員的通路權限:
無論作為什麼繼承,子類永遠無法通路父類的private
當作為public繼承時,父類的public依然為public,protected依然為protected
當作為protected繼承時,父類的public和protected均變為protected

當子類擁有和父類的同名函數時,父類的所有同名函數,子類均無法通路,例如:
class human
{
public:
void samenamefunc(){}
void samenamefunc(int){}
};
class man: public human
{
public:
void samenamefunc(){}
};
這種時候man的對象均隻能調用man類中的samenamefunc()函數,父類的函數及重載函數均無法調用。
如果要想調用父類的同名函數,則有兩種方式:
1)使用human:: samenamefunc(int);
class human
{
public:
void samenamefunc(){}
void samenamefunc(int){}
};
class man: public human
{
public:
void samenamefunc(){human::samenamefunc(int);}
};
2)使用using human::samenamefunc;(記住這種是沒有括号的)
class human
{
public:
void samenamefunc(){}
void samenamefunc(int){}
};
class man: public human
{
public:
void samenamefunc(){}
public:
using human::samenamefunc;
};
這種時候父類的重載函數可以被調用,但是與子類相同的函數依然無法被調用。