现在的位置: 首页 > 综合 > 正文

C++中的访问权限控制

2018年02月16日 ⁄ 综合 ⁄ 共 939字 ⁄ 字号 评论关闭
本文总结C++中关于访问权限的控制。访问权限这个知识点并不难,只是容易被遗忘,因此记录下来,便于查看。

1,C++中的类没有访问权限这个概念,定义类的时候直接class 类名即可,C++也没有包的概念;(一下就露馅了我曾是Java程序员☺。)

2,C++中的访问权限所针对的为:类的成员 以及 基类与子类的继承关系。对于类的成员,访问权限所控制的是类的实例对象对类中的成员的访问能力;而继承关系中访问权限所控制的是子类对于父类的数据成员的访问与使用能力。
   C++中的访问权限有三种,权限从“小”到“大”为:private protected public

3,private:
   被private修饰的成员只能被同一个类中的成员函数或在该类中声明的友元函数所访问。于子类而言,无论以何种方式继承,父类的private成员于其都是隔离的,无法访问,只能通过父类的protected或public成员函数所访问。
   当以private方式继承时,基类的public、protected成员均成为子类的private成员。

4,protected:
   被protected修饰的成员同样也只能被同一个类中的成员函数或在该类中声明的友元函数所访问,与由private修饰的成员不同的是,protected修饰的成员可以为子类所继承。
   当以protected方式继承时,基类的public、protect成员均成为子类的protected成员。

5,public:
   这是权限最大的修饰符,被public所修饰的成员既可以被类中的成员函数(或友元函数)访问,也可以被类的实例在类外直接使用。同时,也能够为子类所继承。
   当以public方式继承时,基类的访问权限在子类中保持不变(当然不包括private成员)。

6,Attention:类的实例在该类的实现中可以直接访问私有、保护数据成员,不受权限的控制。

7,以上内容所提及的“成员”既包括数据成员,也包括成员函数。

8,基类的私有成员可以为子类所继承,但是,不能在子类的实现中访问基类的私有成员,如果允许这样做,就破坏了类的数据隐藏机制。可以这样理解,基类的私有成员永远都是基类的“秘密”,只能通过基类自己“说”(即调用基类所提供的可访问方法)出来。

抱歉!评论已关闭.