C++继承关系举例

1、类成员访问级别有三种:publicprivateprotected
2、继承方式的不同会改变继承成员的访问属性:
public继承:父类成员在子类中保持原有访问级别;
private继承:父类成员在子类中变为private成员;
protected继承:
(1)父类中public成员会变成protected;
(2)父类中protected成员仍然为protected;
(3)父类中private成员仍然为private;
3、private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,派生类都不能直接使用基类的私有成员 。
举例代码:

//类的继承方式对子类对外访问属性影响

#include <cstdlib>
#include <iostream>

using namespace std;

class A
{
private:
	int a;
protected:
	int b;
public:
	int c;

	A()
	{
		a = 0;
		b = 0;
		c = 0;
	}

	void set(int a, int b, int c)
	{
		this->a = a;
		this->b = b;
		this->c = c;
	}
};

class B : public A
{
public:
	void print()
	{
		//cout<<"a = "<<a; //报错 
		cout<<"b = "<<b;
		cout<<"c = "<<endl;
	}
};

class C : protected A
{
public:
	void print()
	{
		//cout<<"a = "<<a; //报错 
		cout<<"b = "<<b;
		cout<<"c = "<<endl;
	}
};

class D : private A
{
public:
	void print()
	{
		//cout<<"a = "<<a; //报错 
		cout<<"b = "<<b<<endl; 
		cout<<"c = "<<c<<endl; 
	}
};

int main(int argc, char *argv[])
{
	A aa;
	B bb;
	C cc;
	D dd;

	aa.c = 100; 
	bb.c = 100; 
	//cc.c = 100; //类的外部是什么含义? 
	//dd.c = 100; 

	aa.set(1, 2, 3);
	bb.set(10, 20, 30);
	//cc.set(40, 50, 60); 
	//dd.set(70, 80, 90); 

	bb.print();
	cc.print();
	dd.print();

	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值