C++中private、protected、public的权限介绍(继承)

基类成员再派生类中的访问权限不能高于继承方式中指定权限。(在高于时,编译器会自动把该权限转变成继承方式中指定权限)

private:    可以在类的内部访问,在类的外部与派生类中不能被访问。

protected:可以在类的内部与派生类中访问,在类的外部不能被访问。

public:      在类的内部,类的外部和派生类中都能被访问。     

#include<iostream>
using namespace std;

class A
{
	
	private:    //类的内部可以访问,派生类不可以访问 
		int m_a;
	protected:
		int m_b;
	public:
		int m_c;
	public:
		void  print1()
		{
			cout<<"m_a:"<<m_a<<endl;
			cout<<"m_b:"<<m_b<<endl;
			cout<<"m_c:"<<m_c<<endl;
		}
}; 

class B :public A
{
//	public:
//		int m_c;
	public:
		void print2()
		{
			cout<<"m_c:"<<m_c<<endl;
		}
};
class C:protected A  //类的内部可以访问,派生类也可以访问,类的外部不可以访问 
{
	//protected:
	//	int m_b;
	//protected:
	//	int m_c;  ,改变了m_c权限 
	//不能打印 m_a,因为 m_a是私有的!!!! 
	public:
		void print3()
		{
			cout<<m_c<<endl;
		}
};
class D:private A    
{
	//private:
    //	int m_b;
    //private:
    //	int m_c;
	public:
		void print4()
		{
			cout<<"m_b:"<<m_b<<endl;
		} 
};
int main()
{
	A a;
	B b;
	C c;
	D d;    
//	b.m_b;   protected在类外不能访问;  在类内和派生类中可以访问; 
//	c.m_c;   变成了protected型;  
//	d.m_c;
	b.print2();
}

猜你喜欢

转载自blog.csdn.net/mmmmmmyy/article/details/81265512