1. 程式人生 > >[c++]子類私有的虛擬函式,多型問題

[c++]子類私有的虛擬函式,多型問題

       執行時也不會報錯。因為函式的訪問許可權應該只在編譯期有,編譯成機器碼就已經沒有訪問許可權控制了。所以最終,應該是可以編譯,也可以執行。這個特點等於為我們提供了一個強制使用子類的程式設計師必須使用基類的指標來呼叫子類實現的函式,而達到多型的目的,因為子類的函式,用子類物件直接使用時,沒有訪問許可權。

#include <iostream> 
using namespace std; 


class Base 
{ 
public: 
virtual void mf1() = 0; 
}; 


class Derived: public Base 
{ 
private: 
virtual void mf1() 
{ 
cout << "call Derived::mf1()" << endl; 
} 
}; 


int main(void) 
{ 
Base *p = new Derived; 
p->mf1(); 
return 0; 
}