C++继承方式

using namespace std;

class Base1
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

//公共继承
class Son1 :public Base1
{
public:
	void func()
	{
		m_A = 10; //可访问 public权限	 父类中的公共权限成员 到子类中依然是公共权限 
		m_B = 10; //可访问 protected权限 父类中的保护权限成员 到子类中依然是保护权限 
		//m_C = 10 ; //不可访问          父类中的私有权限成员 子类访问不到
	}
};

void myClass()
{
	Son1 s1;
	s1.m_A  = 100 ; //其他类只能访问到公共权限
	//s1.m_B = 10;  //到了Son1中时保护权限 类外访问不到
}

//保护继承
class Base2
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son2 :protected Base2
{
public:
	void func()
	{
		m_A = 50; //可访问 protected权限   父类中的公共成员 到子类中变为保护权限 
		m_B = 100; //可访问 protected权限  父类中的保护成员 到子类中依然是保护权限 
		//m_C =  100; //不可访问		   父类中的私有成员 子类访问不到 
	}  
};

void myClass2()
{
	Son2 s;
	//s.m_A =  1000; //不可访问 在Son2中变为保护权限,因此类外访问不到
	//s.m_B = 50;    //不可访问 在Son2中变为保护权限,因此类外访问不到
}

//私有继承
class Base3
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son3 :private Base3
{
public:
	void func()
	{
		m_A = 10; //可访问 private权限  父类公共成员 到子类中变为私有成员
		m_B = 1; //可访问 private权限   父类保护成员 到子类中变为私有成员
		//m_C; //不可访问
	}
};

void myClass3()
{
	Son3 s;
	//s.m_A =  1000; //不可访问 在Son3中变为私有成员,因此类外访问不到
	//s.m_B = 50;    //不可访问 在Son2中变为私有成员,因此类外访问不到
}

class GrandSon3 :public Son3
{
public:
	void func()
	{
		//Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到
		Son3 c;
		//c.m_A;
		//c.m_B;
		//c.m_C;
	}
};
posted @ 2020-04-11 11:07  Akmf's_blog  阅读(109)  评论(0)    收藏  举报