C++的public,protected,private三种继承

一直对这三个理得继承有点懵,我今天又重新理解了一次,终于搞懂了。

#基类定义形式
class A
{
public:   //基类A的公有成员
protected: //基类A的受保护成员,派生类可继承
private:  //基类A的私有成员,基类A及友元函数外不可访问和甚至查看
}

/*
class A
{
int a  //不指定成员属性默认为private成员。
}
*/

//派生类public继承形式
class B : public A //类B为基类A的派生类,以public形式继承基类A
{
public:   //派生类B的公有成员
	//基类成员属性是什么在派生类中就是什么
	//基类A的public成员在派生类B中就是public、protected成员就是protected、private就是private。
	//在派生类B中唯独不可直接访问基类A的private成员。
protected: //派生类B的受保护成员,在派生类中几乎不使用
private:  //派生类B的私有成员,在派生类中几乎不使用
}
//派生类B外不能直接访问基类A的protected成员和private成员
//protected继承形式
class B : protected A //
{
public:   //派生类B的公有成员
	//只有基类A中的public成员在派生类B中变成了protected成员,其它成员属性不变。
	//派生类B不能直接访问基类A的private成员,其它成员都能访问
}
//派生类B外不能直接访问基类A的public成员、protected成员和private成员
//这里特殊的是,由于基类A中的public成员在派生类B中变成了protected成员所以,原基类A中的public成员在派生类外也不能访问了。
//private继承形式
class B : private A //
{
public:   //派生类B的公有成员
	//基类A中的public成员和protected成员,在派生类B都变成了private成员
	//派生类B不能直接访问基类A的private成员,其它成员都能访问。
}
//派生类B外不能直接访问基类A的public成员、protected成员和private成员
/*
class B : A //也可这样写,如果不填继承形式默认为private
{
public: 
}
*/

附上个别人整理的总结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值