访问控制与封装

    在C++语言中,我们使用访问说明符加强类的封装性:

    ·定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口。

    ·定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装(即隐藏了)类的实现细节。

    作为接口的一部分,构造函数和部分成员函数紧跟在public说明符之后;而数据成员和作为实现部分的函数则跟在private说明符后面。

    一个类可以包含0个或多个访问说明符,而且对于某个访问说明符能出现多少次也没有严格限定。每个访问说明符指定了接下来的成员的访问级别,其有效范围直到出现下一个访问说明符或者到达类的结尾处为止。

    class和struct关键字的唯一区别是,默认访问权限不太一样。类可以在它的第一个访问说明符之前定义成员,如果使用struct关键字,则定义在第一个访问说明符之前的成员是public的;相反,使用class,这些成员是private的。

 

友元

       对于作为类的接口一部分而不是类的成员的函数,由于private的限制而无法访问需要访问的成员。

       类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。

    如果类想把一个函数作为它的友元,只需要增加一条以friend关键字开始的函数声明语句即可。

    友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限。友元不是类的成员也不受它所在区域访问控制级别的约束。一般来说,最好在类定义开始或结束前的位置集中声明友元。

    友元的声明仅仅指定了访问的权限,而非一个通常意义上的函数声明。如果我们希望类的用户能够调用某个友元函数,那么我们就必须在友元声明之外再专门对函数进行一次声明。为了使友元对类的用户可见,我们通常把友元的声明与类本身放置在同一个头文件中(类的外部)。许多编译器允许在尚无友元函数的初始声明的情况下就调用它,不过最好还是提供一个独立的函数声明。

 

关键概念:封装的益处

       封装有两个重要的优点:

       ·确保用户代码不会无意间破坏封装对象的状态。

       ·被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码。

    尽管当类的定义发生改变时无须更改用户代码,但是使用了该类的源文件必须重新编译。

 

更多C++基础概念

 

  

posted @ 2017-11-08 10:02  哲贤  阅读(231)  评论(0编辑  收藏  举报