C++郑莉笔记 chapter5 数据共享与保护

chapter5 数据共享与保护

标识符的作用域与可见性

作用域即标识符的有效范围,可见性即标识符是否可以被引用

作用域

  • 函数原型作用域
  • 局部作用域
  • 类作用域
  • 文件作用域
  • 命名空间作用域

可见性

标识符可见性规则:

  • 声明在前,使用在后
  • 同一作用域中,不能声明同名的标识符
  • 在没有互相包含关系的不同作用域中声明的同名标识符互不影响
  • 在两个或多个具有包含关系的作用域中声明同名标识符,则外层标识符在内层不可见

对象生存期

静态生存期:与程序运行期相同,称其具有静态生存器,如使用static声明的局部变量、全局变量

动态生存期:除以上两种情况外的对象

静态成员

静态成员为类的所有对象所有,只有一份供整个类使用(数据共享)

静态数据成员

  • 使用static关键字在类内声明static type_name variable_name,类外定义type_name class_name::variable_name=n
  • 静态数据成员具有静态生命周期
  • 使用方式
    • class_name::variable_name
    • obj_name.variable_name

静态成员函数

  • 使用static关键字声明static type_name func_name(parameters)
  • 使用方式
    • class_name::func_name()
    • obj_name.func_name()
  • 静态成员函数可以直接访问该类的静态数据和函数成员
  • 静态成员函数访问非静态数据成员必须通过对象名

类的友元

友元提供了不同类或对象成员函数之间、类的成员函数与一般函数之间的共享机制

友元函数

  • 使用friend声明friend type_name func_name(parameters)
  • 通过声明的友元函数可以直接在类外访问类的私有和保护成员

友元类

  • 使用friend声明friend class class_name
  • A为B的友元类,则A的所有成员函数都是B的友元函数,都可以访问B类的私有和保护成员

注意:

  • 友元关系单向
  • 友元关系非传递
  • 友元关系不可继承

共享数据的保护

常对象

常对象必须被初始化且不能被更新const class_name obj_name

  • 常对象不能通过对象名访问对象成员,不能为其属性赋值
  • 不能通过常对象调用普通成员函数

常成员函数

type_name func_name(parameters)const;

  • 常成员只能调用常成员函数
  • 常成员函数调用期间,目的对象都视为常对象,常成员函数不能更新目的对象的数据成员,也不能调用其他非常成员函数
  • 可以用于重载

常数据成员

常数据成员不能在任何函数中赋值
构造函数只能通过列表初始化

常引用

const typename &variable_name;

  • 常引用所引用的对象不能被更新
  • 非常引用不能绑定常对象

多文件编程与编译预处理指令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值