c ++中继承问题小结

来源:互联网 发布:风云无双魔石进阶数据 编辑:程序博客网 时间:2024/05/16 06:35
1.c++中继承有公有继承,保护继承,私有继承

    定义个基类:

    #include<iostream>

    using namespace std;

    class Base

    {

    public:

    void display()

    {

    cout《"huang"《endl;

    }

    protected:

    int x;

    private:

    int y;

    };

    定义一个派生类:

    公有继承:派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类的公有和保护成员,

    基类的公有成员和保护成员作为派生类的成员时,保持其原有状态

    class A:public Base

    {

    public:

    void print()

    {

    cout《"liglog"《endl;

    display();//派生类内部可以访问基类的公有成员

    x=0;//派生类内部中可以访问基类的保护成员

    cout《x《endl;

    //y=1;//派生类内部都不可访问基类的私有成员

    //cout《y《endl;

    }

    protected:

    int Ax;

    private:

    int Ay;

    };

    保护继承:派生类的成员函数可以访问基类的公有成员和保护成员,以及基类的公有成员和保护成员作为派生类的保护成员,保护成员还可被派生类的子类访问

    class B:protected Base

    {

    public:

    void print()

    {

    cout《"shi"《endl;

    display();//派生类内部可访问基类的公有成员

    x=1;//派生类内部可访问基类的保护成员

    cout《x《endl;

    //      y=1;//派生类内部不可访问基类的私有成员

    //      cout《y《endl;

    }

    protected:

    int Bx;

    private:

    int By;

    };

    私有继承:基类的公有成员和保护成员作为派生类的私有成员,不能被派生类的子类访问,即不能被往下继承。

    class C:private Base

    {

    public:

    void print()

    {

    cout《"wo"《endl;

    display();//派生类内部可访问基类的公有成员

    x=1; //派生类内部可访问基类的保护成员

    cout《x《endl;

    //      y=1; //派生类内部不可访问基类的私有成员

    //      cout《y《endl;

    }

    protected:

    int Cx;

    private:

    int Cy;

    };

    int main()

    {

    // 公有继承部分

    A aObject;

    aObject.display();//派生类外部可以访问基类的公有成员

    aObject.print();

    // aObject.x=1;//派生类外部不可访问基类的保护成员

    // aObject.y=3;//派生类外部不可访问基类的私有成员

    //保护继承部分

    B bObject;

    // bObject.display();//派生类外部不可访问基类的公有成员

    bObject.print();

    // bObject.x=1;//派生类外部不可访问基类的保护成员

    // bObject.y=1;//派生类外部不可访问基类的私有成员

    //私有继承部分

    C  cObject;

    //  cObject.display();//派生类外部不可访问基类的公有成员

    cObject.print();

    //  cObject.x=1;//派生类外部不可访问基类的保护成员

    //  cObject.y=1;//派生类外部不可访问基类的私有成员

    return 0;

    }

    哪里不对的,指点指点,别指指点点。