zoukankan      html  css  js  c++  java
  • 类成员的访问范围说明符

    class CBase
    {
    private:
    	int nPrivate;				// 私有成员
    public:
    	int nPublic;				// 公有成员
    protected:
    	int nProtected;				// 保护成员
    };
    class CDerived :public CBase
    {
    	void AccessBase(CDerived& cd)
    	{
    		nPublic = 1;			// OK
    		//nPrivate = 1;			// 错,不能访问基类私有成员
    		nProtected = 1;			// OK,访问从基类继承的 protected 成员
    		CBase f;
    		//f.nProtected = 1;		// 错,在派生类的成员函数中不能访问其他基类对象的基类保护成员
    		cd.nProtected = 1;		// OK,在类的成员函数内部可以访问同类其他对象的全部(私有,保护,公有)属性和函数
    	}
    };
    
    int main()
    {
    	CBase b;
    	CDerived d;
    	//int n = b.nProtected;		// 错,在类的成员函数外部,不能访问基类保护成员
    	//n = d.nPrivate;			// 错,此处不能访问d的私有成员
    	d.nPublic = 10;				// OK
    	return 0;
    }
    

    注意区分示例程序第18行与第19行!!!

    在类的定义中,可以用 private , protected , public 三种关键字来指定成员可被访问的范围。

    • private : 用来指定私有成员。一个类的私有成员,不论是成员变量还是成员函数,都只能在本类的成员函数内部才能被访问。因此,在类的成员函数内部,既能够访问当前对象的全部属性、函数,也可以访问同类其他对象的全部属性、函数。 ——示例程序第19行
    • public : 用来指定公有成员。一个类的公有成员在任何地方都可以被访问。
    • protected : 用来指定保护成员。保护成员的可访问范围比私有成员大,比公有成员小。能访问私有成员的地方都能访问保护成员。保护成员扩大的范围表现在:基类的保护成员可以在派生类的成员函数中被访问。不过需要注意的是,派生类的成员函数只能访问所作用的那个对象(即this指针指向的对象)的基类保护成员,不能访问其他基类对象的基类保护成员。 ——示例程序第18行

    三种关键字出现的次数和先后次序都没有限制。成员的可访问范围由离它前面最近的那个访问范围说明符决定。如果某个成员前面没有访问范围说明符,则对class来说,该成员默认地被认为是私有成员;对struct来说,该成员默认地被认为是公有成员。

  • 相关阅读:
    Eureka Server的多级缓存和过期机制
    eureka-client拉取注册表
    Ribbon的调用流程
    EurekaServer启动
    eureka的注册
    Eureka的客户端是怎么启动的?
    Ribbon的负载均衡源码
    Ribbon是怎么重构URL的?
    Maven添加本地jar
    window 常用软件记录
  • 原文地址:https://www.cnblogs.com/ltimaginea/p/13867663.html
Copyright © 2011-2022 走看看