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

本文通过一个C++示例介绍了虚函数的概念,并探讨了如何在派生类中使用虚函数。文章还讨论了protected和private继承对于基类指针访问的影响。

#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,访问权限有限制了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值