欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++下讲解关于公有继承、公有私有和保护继承的不同

程序员文章站 2022-06-17 19:38:04
c++下的公有继承、公有私有和保护继承的不同讲解 #include using namespace std; /*---------------------...

c++下的公有继承、公有私有和保护继承的不同讲解

#include <iostream>
using namespace std;
/*---------------------------------
                    19.25-1.公有继承

       变化        |     公有继承	  |      保护继承	 |    私有继承
基类的公有成员变成 | 派生类的公有成员 | 派生类的保护成员 | 派生类的私有成员
基类的保护成员变成 | 派生类的保护成员 | 派生类的保护成员 | 派生类的私有成员
基类的私有成员变成 |                 只能通过基类的接口访问
---------------------------------*/
class a
{
public:
	void set(int a,int b){x=a;y=b;}
	void show(){  cout<<x<<endl<<y<<endl;}
protected:
	int x;
private:
	int y;
};
class b:public a
{
public:
	//void set(int a,int b){x=a;y=b;} //编译报错,基类的私有成员y被公有派生后,是不可以直接访问的
	//void show(){  cout<<x<<endl<<y<<endl;} //编译报错,基类的私有成员y被公有派生后,是不可以直接访问的
	/*修改如下*/
	void setb(int a){  x=a;}
	void showb(){  cout<<x<<endl;}
};
int main()
{
	b b;
	b.set(1,2);//基类的公有成员函数set被公有派生后,可以直接访问
	b.show();  //基类的公有成员函数set被公有派生后,可以直接访问
	cout<<"-----------------"<<endl;
	b.setb(3); //基类的公有成员变量x被公有派生后,可以直接访问
	b.showb();
	return 0;
}

运行结果:

1
2
-----------------
3
press any key to continue