C++有不少措施保护数据的安全性,如private保护类的数据成员等。 但对于一些共用的数据,如函数实参与形参等,我们可以在不同的场合通过不同的途径访问同一个数据对象。有时不经意的误操作会改变数据的值,而这是人们所不希望出现的。

►既要使数据能在函数间共享,又要保证它不被任意修改,可以使用 const限定,即把数据定义为只读的。

1. 常对象

常对象中的数据成员均是const的,因此必须要有初值。无论什么情况下,常对象中的数据成员都不能被修改。

除了合成的默认构造函数和默认析构函数外,也不能调用常对象的非const型的成员函数。例如:

 

2. 常数据成员

3. 常成员函数

 

无论声明还是定义常成员函数都要有const关键字。常成员函数可以访问const数据成员,也可以访问非const的数据成员。const数据成员可以被const成员函数访问,也可以被非const的成员函数访问。 具体情况见下表:

关于常成员函数的说明:

(1)在一个类中,如果有些数据成员的值允许修改,另一些数据 成员的值不允许修改,那么可以将一部分数据成员声明为const (常数据成员),使得其值不能被修改。而普通的成员函数可以修 改普通的数据成员,但只能访问常数据成员的值。

(2)如果要求所有数据成员的值都不允许改变,可以将对象声明为const的(常对象),那么只能用const成员函数访问数据成员,且不能修改其值。这样,数据成员无论如何也不会被修改。

(3)如果定义了一个常对象,只能调用其中的const成员函数,而不能调用非const成员函数。如果需要访问对象中的数据成员,可 将常对象中所有成员函数都声明为const成员函数,但应确保在函数中不会修改对象中的数据成员。

(4)常对象中的成员函数不一定是常成员函数。如果在常对象中的成员函数未加const声明,C++把它作为非常成员函数处理。

(5)常成员函数不能调用另一个非常成员函数。

常对象、常数据成员、常成员函数相关推荐

  1. C++中的常引用、常对象、常函数、常数据成员

    1.常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改.常引用的声明形式为:const 类型说明符 &引用名. ...

  2. 常对象、常数据成员、常成员函数总结

    # include <iostream> using namespace std;class Time {public:Time(int h = 10, int m = 30, int s ...

  3. 【C++】 常对象、常数据成员、常成员函数总结

    常数据成员  ◆ 常数据成员必须进行初始化,并且不能被更新.  ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化:普通数据成员在初始化列表和函数体中 ...

  4. C++学习(六) 常引用、常对象、常对象成员、常成员函数

    文章目录 1.常引用 1.1.作用 1.2.说明 二.常对象 2.1.作用 2.2.注意 2.3.说明 三.常对象成员 3.1.作用 3.2.说明 四.常成员函数 4.1.说明 4.2.注意 1.常引 ...

  5. C++常成员函数 常对象成员

    什么是常对象成员,什么是常成员函数? 首先先看一段代码: class A { private:const int a; // 常对象成员,只能在初始化列表赋值public:// 构造函数A() { } ...

  6. 常对象与常函数(Const修饰的对象与成员函数)

    常函数: 其定义与注意事项如下:     1.成员函数后加const后,我们称这个函数为常函数     2.常函数内不可修改成员属性     3.成员属性声明时加关键字mutable后,在常函数中依然 ...

  7. C++中常对象、常成员函数、常成员变量

    用const修饰的类对象叫做常对象, 用const修饰的成员函数叫常成员函数, 用const修饰的成员变量叫常成员变量, 常对象: 型如:      const  <类名>  <对象 ...

  8. 简单总结 常(常量/const)成员函数 and 常对象的使用

    一.常(常量/const)成员函数 在函数定义式()后 + const 比如: class Rational { public://非常成员函数void func() { cout << ...

  9. 常引用、常对象和对象的常成员

    常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.我们经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改. 常引用的声明形式为:const 类型说明符 &引用名 ...

  10. C++基础知识(常函数和常对象)

    1.常函数  void func()  const {}  常函数 2.常函数  修饰是 this指针  const Type * const this 3.常函数  不能修饰this指针指向的值 4 ...

最新文章

  1. redis的增加元素操作
  2. POJ1080 Human Gene Functions 动态规划 LCS的变形
  3. c#中已知一个外部窗口的句柄,怎么关闭
  4. 那些你可能还不知道的新发明
  5. 在mybatis中调oracle dblink存储过程
  6. Markdown简介
  7. selenium python 启动Chrome
  8. 201621123015《Java程序设计》第11周学习总结
  9. SQL Server 数据库安装教程SQL Server 2017
  10. 攻防比赛常见的打点路径有哪些
  11. 关于如何有效锻炼肌肉的十个小贴士(转)
  12. 敏捷开发思想之拥抱变化
  13. 50位中外AI领袖论剑AI World,世界人工智能大会10大亮点全回顾
  14. IT项目经理成长手记
  15. Excel中怎么把一数列数据,用逗号隔开合并到一行
  16. 去哪儿网被央视曝光,其实智慧旅行可以做到更多
  17. 爬虫前行中(datawhale task2)
  18. H5中ajax()方法发送网络数据请求
  19. [十月往昔]——Linux内核中的内存管理浅谈
  20. json.loads与json.load的区别

热门文章

  1. 找工作别只盯着BATJ,这些“独角兽”企业性价比超高的好不好
  2. 双十一数码好物推荐排行榜,值得入手的数码好物分享
  3. windows2000做虚拟主机的安全设置
  4. 【Java基础查缺补漏】
  5. JavaSocket编写发送TCP请求的工具类
  6. 传输介质:同轴电缆、双绞线和光纤
  7. MCADEx开发 ProE二次开发 Creo二次开发 项目配置
  8. 有道难题,我的OO解法
  9. JavaScript权威指南7(二) 第五章
  10. Linux 中改变主机名的 4 种方法