+ -
当前位置:首页 → 问答吧 → C++继承权限疑问。。

C++继承权限疑问。。

时间:2010-08-11

来源:互联网

#include <iostream.h>

class A{
public:
        virtual void disp()
        {
                cout<<"hello A"<<endl;
        }
};

class B:public A{
protected:
        void disp()
        {
                cout<<"hello B"<<endl;
        }
};
main()
{
        A *a = new B();
        a->disp();
        delete a;
}

以上代码中输出了:hello B
B类继承A类的disp()函数为public,但覆盖函数却在protected。我就奇怪为什么还可以通过a指针在外部直接调用disp()?以及这样做有什么明显的好处吗?
大家给说说,谢谢。

作者: djking1986   发布时间: 2010-08-11

虚函数的机制。
如果是通过B对象的指针,则不能直接访问protect方法,编译时会报错。

作者: shaoxia   发布时间: 2010-08-11