您的位置:首页 > 其它

通过protected,private继承的子类不能通过基类指针进行访问。

2010-05-29 20:17 369 查看
#include<iostream>

const double PI=3.1415926;

using namespace std;

class Shape

{

public:

    Shape(double a ,double b):Area(a),Perimeter(b){}

    virtual void Show () const = 0;

protected:

    double Area,Perimeter;

    static double sum;

};

class Circle:protected Shape

{

public:

    Circle(double r):Shape(r*r*PI,2*r*PI),radius(r)

    {

        sum+=(r*r*PI);

    }

    void Show () const

    {

        cout<<"圆形的面积"<<Area<<"圆形的面积"<<Perimeter<<endl;

    }

private:

    double radius;

};

class Rectangle:protected Shape

{

public:

    Rectangle(double a,double b):Shape(a*b,2*(a+b))

    {

        sum+=(a*b);

    }

    void Show () const

    {

        cout<<"矩形的面积"<<Area<<"矩形的面积"<<Perimeter<<endl;

    }

private:

    double a,b;

};

double Shape::sum=0;

int main()

{

    Shape *A;

    Circle B(30);

    Rectangle C(30,50);

    A =&B;

    A->Show();

    A=&C;

    A->Show();

   return 0;

   

}

 

学习虚函数,但碰到了意外问题,寻之,原来是protected和private的继承类不能通过基类指针对象访问。

因为基类的成员由于protected和private继承访问权限变成了protected和private,访问权限有限制了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class c
相关文章推荐