c++中三种继承方式

#include "stdafx.h"


// c++的三种继承方式
// 1.public    继承过来的成员属性不变
// 2.protected 继承过来的public属性变为protected,其他不变
// 3.private   继承过来的成员属性全部变为private

class A {
public :
	int m_public;
protected :
	int m_protected;
private :
	int m_private;
};

class B : public A {
	void setPublic(int n_public){
		m_public = n_public;
	}
	void setProtected(int n_protected){
		m_protected = n_protected;
	}
	void setPrivate(int n_private){
		// m_private = n_private; // 基类私有,无访问权限
	}
};

class C : protected A {
	void setPublic(int n_public){
		m_public = n_public;
	}
	void setProtected(int n_protected){
		m_protected = n_protected;
	}
	void setPrivate(int n_private){
		// m_private = n_private; // 基类私有,无访问权限
	}
};

class D : private A {
	void setPublic(int n_public){
		m_public = n_public;
	}
	void setProtected(int n_protected){
		m_protected = n_protected;
	}
	void setPrivate(int n_private){
		// m_private = n_private; // 基类私有,无访问权限
	}
};

class E : public D {
	void setPublic(int n_public){
		// m_public = n_public; // D私有继承A后m_public已变为私有,无访问权限
	}
	void setProtected(int n_protected){
		// m_protected = n_protected;// D私有继承A后m_protected已变为私有,无访问权限
	}
	void setPrivate(int n_private){
		// m_private = n_private; // 基类私有,无访问权限
	}
};

class F : public C {
	void setPublic(int n_public){
		m_public = n_public;
	}
	void setProtected(int n_protected){
		m_protected = n_protected;
	}
	void setPrivate(int n_private){
		// m_private = n_private; // 基类私有,无访问权限
	}
};

int main(){
	B b;
	b.m_public = 10;
	// b.m_protected = 10; // 类外部不可使用
	// b.m_private = 10;   // 基类私有,无权访问

	C c;
	// c.m_public = 10;    // 错误,protected继承A类里变成了protected成员(类外部无法访问)
	// c.m_protected = 10; // 错误,protected继承A类里还是protected成员(类外部无法访问)
	// c.m_private = 10;   // 错误,在派生类中都不可以直接使用,在类外就更不能了

	D d;
	// d.m_public = 10;   // 错误,private继承A类里变成了private成员
	// d.m_protected = 10;// 错误,private继承A类里变成了private成员
	// d.m_private = 10;  // 错误,在派生类中都不可以直接使用,在类外就更不能了

	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值