父類訪問特性 類的繼承特性 子類的訪問特性
public public
protected public protected
private No access
public protected
protected protected protected
private No aceess
public private
protected private private
private No access
函數的重載是發生在一個類當中的,而函數的覆蓋是發生在父類與子類之間的.
不是靜態成員時,子類可以用類似 A::function()來訪問A的函數,A::b成員亦可。A表示父類名。
C++的多態性:當C++編譯器在編譯的時候,發現其父類是虛函數時,就會採用遲綁定技術,根據所傳對象的類型
來判定調用哪個函數(父類或子類)。前提是傳遞子類的指標:子類有的話調用子類,子類沒有調用父類。
還有一種純虛函數:父類只定義操作,並沒實現,繼承類必須實現它。
#include <iostream>
using namespace std;
class Animal
{
public:
static const int cc=1;
/*virtual*/ void breathe()
{
cout<<"animal breath"<<endl;
}
//virtual void breathe()=0;
};
class Fish: public Animal
{
public:
Fish():a(22)
{
}
void breathe()
{
cout<<Animal::cc<<endl;
cout<<"fish breathe"<<endl;
}
private:
const int a;
};
void fun(Animal* pAn)
{
pAn->breathe();
}
int main()
{
Fish fi;
Animal *pa;
pa=&fi;
fun(pa);
system("pause");
return 0;
}