1. 程式人生 > >父類的虛擬函式宣告為private,是否可以實現多型

父類的虛擬函式宣告為private,是否可以實現多型

大家,先想一想,如果把原來實現多型的父類中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;
}


答案是可以的,至於為什麼,這是一種設計模式的理念。具體的等我弄懂了再補充大家可以先自己想下,研究研究。