共享数据的保护

对于既需要共享、又需要防止改变的数据应该声明为常量。

1、常引用

如果在声明引用时用const修饰,被声明的引用就是常引用。常引用所引用的对象不能被更新。声明形式如下:

const 类型说明符 &引用名;

2、常对象

常对象时这样的对象,它的数据成员值在对象的整个生存期间内不能被改变。也就是说,常对象必须进行初始化,而且不能被更新。声明如下:

类名 const 对象名;

3、用const修饰的类成员

a、常成员函数

使用const关键字修饰的函数为常成员函数,其格式如下:

类型说明符  函数名(参数表) const;

注意:

1)const是函数类型的一个组成部分,因此在函数定义部分也要带const关键字。

2)常成员函数不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数。

3)如果将一个对象说明为常对象,则通过该 常对象只能调用它的常才成员函数,而不能调用其他成员函数。

4)const关键字可以用于对重载函数的区分。

#include<iostream>
using namespace std;
class R
{
public:
R(int r1,int r2){R1=r1;R2=r2;}
void print();
void print() const;
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<";"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
int main()
{
R a(5,4);
a.print();//调用void print()
const R b(20,52);
b.print();//调用void print() const
return 0;
}

b、常数据成员

如果一个类中说明了常数据成员,那么任何函数中都不能对该成员赋值。构造函数对该数据成员进行初始化,就只能通过初始化列表。

最新文章

  1. MySQL中的增删改查
  2. 制作一个顶部图片可以拉伸放大缩小效果的tableViewHeader
  3. Hadoop 2.6 MapReduce运行原理详解
  4. Unity抗锯齿
  5. 8月3日奥威Power-BI V11 视频交流开课啦!
  6. android开发 textview根据字数长度自动调整字体大小
  7. 11G RAC 简单命令
  8. PHP之路,Day1 - PHP基础
  9. ADC及DA的头文件复析
  10. bottle + vue.js 打造你的单页应用
  11. Linux操作系统学习_用户态与内核态之切换过程
  12. 《Java2 实用教程(第五版)》教学进程
  13. 判断语句之单if
  14. 深入java----垃圾回收
  15. Synchronized 和 Lock 锁在JVM中的实现原理以及代码解析
  16. CAN通信详解
  17. 逆袭之旅DAY10.东软实训.
  18. optparse模块解析命令行参数的说明及优化
  19. lodash用法系列(4),使用Map/Reduce转换
  20. MySQL数据库Innodb储存引擎----储存页的结构

热门文章

  1. ARM Holdings
  2. Linux的基本使用
  3. Redis 过期键的设置、获取和删除过期时间
  4. ecmall时间的问题
  5. 51 NOD 1753 相似子串 字符串hash
  6. 九度OJ 1129:Skew数 (大数运算)
  7. java之HashMap的遍历Iterator
  8. 设置开启telnet功能
  9. c# 获取当前行的位置信息
  10. [CPP - STL] swap技巧