C++之继承(一)

本文介绍了C++中的三种继承方式:公有继承、私有继承和保护继承。公有继承下,基类成员的访问权限在派生类中保持不变,但派生类不能直接访问基类的private成员。私有继承使得基类所有成员在派生类中变为私有,仅允许在类内访问。保护继承则将基类的public成员转为protected,同样限制了外部访问。C++中的final关键字可以防止类被进一步继承。
摘要由CSDN通过智能技术生成

c++的继承方式有三种:公有继承、私有继承、保护继承。
1.公有继承

class B{
	private:
		int i;
		void Seti(int i){this->i=i;}
	public:
		int j;
	protected:
		int k;
		void setj(int j){this->j=j;}
	public:
		void seti(int i){this->i=i;}	
};
class D:public B{
	public:
		void fun(){
			j=1;
			k=9;
			i=8;//L1	[Error] 'int B::i' is private
			Seti(5);//L2	[Error] 'void B::Seti(int)' is private
			setj(2);
		}
};
int main(){
	D obj;
	obj.j=0;// L3
	obj.fun();
	obj.seti(2);//L4
	obj.setj(2);//L5 	[Error] 'void B::setj(int)' is protected
}

以上代码展示的是公有继承,基类成员的访问权限在派生类中保持不变。派生类不能直接访问继承自基类的private成员。L1语句试图在D的成员函数fun()中直接访问i,而i在基类中是private,所以访问失败,Seti()函数是同样的道理。派生类可以直接访问继承自基类的public和protected成员,因此fun()函数中调用setj()函数是成功的。在类外,派生类继承自基类的public成员可以通过派生类对象访问,例如L3、L4,但是private成员和protected成员是不允许通过派生类对象或类外函数访问的,如L5。
另外,一个类如果不被其他类继承,那么private和protected成员具有相同的访问属性ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值