C++私有、保护、公有继承

来源为此处:https://www.cnblogs.com/qlwy/archive/2011/08/25/2153584.html ,在此基础上增加了函数,各种情况调用,看代码自己理解吧。。


#include<iostream>
using namespace std;

class A       //父类
{
private:
    int privatedateA;
    void print_pri() { cout << "pri" << endl; }
protected:
    int protecteddateA;
    void print_pro() { cout << "pro" << endl; }
public:
    int publicdateA;
    void print_pub() { cout << "pub" << endl; }
};
//////////////////////////////////////////////////////////////////////////
class B :public A
{
public:
    void funct()
    {
        int b;
        //b = privatedateA;   //error:基类中私有成员在派生类中是不可见的
        b = protecteddateA; //ok:基类的保护成员在派生类中为保护成员
        b = publicdateA;    //ok:基类的公共成员在派生类中为公共成员
        //print_pri();      // error:基类私有成员函数在派生类中是不可见的
        print_pro();
        print_pub();
    }
};
//////////////////////////////////////////////////////////////////////////
class C :private A  //基类A的派生类C(私有继承)
{
public:
    void funct()
    {
        int c;
        //c = privatedateA;    //error:基类中私有成员在派生类中是不可见的
        c = protecteddateA;  //ok:基类的保护成员在派生类中为私有成员
        c = publicdateA;     //ok:基类的公共成员在派生类中为私有成员
        //print_pri();         //ok:基类的保护成员函数在派生类中为私有成员函数
        print_pro();
        print_pub();
    }
};
//////////////////////////////////////////////////////////////////////////
class D :protected A   //基类A的派生类D(保护继承)
{
public:
    void funct()
    {
        int d;
        //d = privatedateA;   //error:基类中私有成员在派生类中是不可见的
        d = protecteddateA; //ok:基类的保护成员在派生类中为保护成员
        d = publicdateA;    //ok:基类的公共成员在派生类中为保护成员
        //print_pri();        
        print_pro();
        print_pub();        //ok:基类的公共成员函数在派生类中为保护成员函数
    }
};
//////////////////////////////////////////////////////////////////////////
int main()
{
    int a;

    B objB;
    //a = objB.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
    //a = objB.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见
    objB.publicdateA = 3;
    a = objB.publicdateA;    //ok:基类的公共成员在派生类中为公共成员,对对象可见.
    //objB.print_pri();
    //objB.print_pro();
    objB.print_pub();

    C objC;
    //a = objC.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
    //a = objC.protecteddateA; //error:基类的保护成员在派生类中为私有成员,对对象不可见
    //a = objC.publicdateA;    //error:基类的公共成员在派生类中为私有成员,对对象不可见
    //objC.print_pri();
    //objC.print_pro();
    //objC.print_pub();

    D objD;
    //a = objD.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
    //a = objD.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见
    //a = objD.publicdateA;    //error:基类的公共成员在派生类中为保护成员,对对象不可见
    //objD.print_pri();
    //objD.print_pro();
    //objD.print_pub();

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容