zoukankan      html  css  js  c++  java
  • 访问控制与封装

    使用访问说明符能够加强类的封装性:

    • public 说明符后的成员在整个程序内可被访问,public 成员定义类的接口。
    • private 说明符之后的成员可被类的成员函数访问,但是不能被使用该类的代码访问,private 部分封装了类的实现。

    一般的,构造函数和部分作为接口的成员函数定义紧跟在 public 说明符之后。

    数据成员和作为实现部分的成员函数紧跟在 private 之后。

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

    封装的益处:

    • 确保用户代码不会无意间破坏封装对象的状态。
    • 被封装的类的具体实现细节可以随时改变,无须调整用户级别的代码。

    使用 class 或 struct 关键字

    定义一个类时可以使用 classstruct 关键字中任何一个,唯一的区别是 structclass 的访问权限不一样。

    类可以在它的第一个访问说明符之前定义成员:

    • 如果使用 struct 关键字,则定义在第一个访问说明符之前的成员都是 public
    • 如果使用 class 关键字,则定义在第一个访问说明符之前的成员都是 private

    友元

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

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

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

    友元的声明

    友元的声明仅仅指定了访问权限,而非一个通常意义上的函数声明。如果希望类的用户能够调用某个友元函数,那么必须在友元声明之外再专门对函数进行一次声明。

    为了使友元对类的用户可见,通常把友元的声明与类本身放置在同一个头文件中(类的外部)。

    一些编译器允许在尚无友元函数声明的情况下就调用它。不过即使编译器支持这种行为,最好还是提供一个独立的函数声明。

  • 相关阅读:
    oracle数据库导出与导入
    Mysql导入表信息[Err] 1067
    Golang--不定参数类型
    (转)Docker容器的重启策略及docker run的--restart选项详解
    (转)Golang--使用iota(常量计数器)
    Golang--匿名变量
    Golang--Hello World
    Ubuntu Server16.04 配置网卡
    U盘安装ubuntu 16.04 遇到 gfxboot.c32:not a COM32R image boot 的解决方法
    ipfs私链服务
  • 原文地址:https://www.cnblogs.com/xiaojianliu/p/12497763.html
Copyright © 2011-2022 走看看