C++三种继承方式--公有继承、保护继承、私有继承

来源:互联网 发布:淘宝美工招聘网 编辑:程序博客网 时间:2024/06/05 05:41
//公有继承:基类的公有和保护成员在派生类中仍然是公有和保护成员,可以由派生类的成员函数来访问,//派生类对象可以访问公有的成员,至于基类的私有成员,无论是派生类的成员函数,还是派生类的对象,都无法访问//私有继承:基类所有的非私有成员在派生类中一律变成派生类的私有成员,派生类只能通过它的成员函数来访问,//派生类对象不能访问,至于基类的私有成员,只能由基类的成员函数来访问。//保护继承:基类的非私有成员,在派生类中都变成保护成员,这些成员可以被派生类的成员函数访问,但不能被派生类对象访问。//基类的私有成员仍然在派生类中不可见。#include<iostream>using namespace std;class A{public:void setX(int i);int getX() const;int z;protected:int y;private:int x;};void A::setX(int i){x=i;}int A::getX() const{return x;}class B:public A{public:void SetValue(int,int,int,int,int);void display(void) const;protected:int m;private:int n;};void B::SetValue(int a,int b,int c,int d,int e){//x=a;                   //基类的私有数据x对派生类不可见,故直接访问非法setX(a);                 //通过公有的成员函数setX()来间接访问基类的私有数据xy=b;                     //公有继承,将b的值赋给基类的保护成员y,访问合法z=c;                     //公有继承,将c的值赋给基类的公有成员z,访问合法m=d;n=e;}void B::display() const{//cout<<"x="<<x<<endl;    //x在派生类中不可访问cout<<"x="<<getX()<<endl;cout<<"y="<<y<<endl;cout<<"z="<<z<<endl;cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;}int main(){B b;b.SetValue(1,2,3,4,5);b.display();cout<<"z="<<b.z<<endl;//公有权限,可以通过对象访问//cout<<"x="<<b.x<<endl;//基类的私有对象,类外均不可访问//cout<<"y="<<b.y<<endl;//基类的保护数据,不可通过对象访问//cout<<"m="<<b.m<<endl;//派生类的保护数据,不可通过对象访问    //cout<<"n="<<b.n<<endl;//派生类的私有数据,不可通过对象访问system("pause");return 0;}

0 0
原创粉丝点击