父類的虛擬函式宣告為private,是否可以實現多型
阿新 • • 發佈:2019-01-24
大家,先想一想,如果把原來實現多型的父類中virtual函式宣告為private的形式,是否還可以實現多型呢。答案將由下面的程式碼給出。
#include<iostream> using namespace std; class A { private: virtual void print() { cout<<"in class A!"<<endl; } public: void f() { print(); } }; class B:public A { public: void print() { cout<<"in class B!"<<endl; } }; class D:public A { public: void print() { cout<<"int class D!"<<endl; } }; int main(void) { A *p1=new B; p1->f(); A *p2=new D; p2->f(); return 0; }
答案是可以的,至於為什麼,這是一種設計模式的理念。具體的等我弄懂了再補充大家可以先自己想下,研究研究。