常对象、常数据成员、常成员函数
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)常成员函数不能调用另一个非常成员函数。
常对象、常数据成员、常成员函数相关推荐
- C++中的常引用、常对象、常函数、常数据成员
1.常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改.常引用的声明形式为:const 类型说明符 &引用名. ...
- 常对象、常数据成员、常成员函数总结
# include <iostream> using namespace std;class Time {public:Time(int h = 10, int m = 30, int s ...
- 【C++】 常对象、常数据成员、常成员函数总结
常数据成员 ◆ 常数据成员必须进行初始化,并且不能被更新. ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化:普通数据成员在初始化列表和函数体中 ...
- C++学习(六) 常引用、常对象、常对象成员、常成员函数
文章目录 1.常引用 1.1.作用 1.2.说明 二.常对象 2.1.作用 2.2.注意 2.3.说明 三.常对象成员 3.1.作用 3.2.说明 四.常成员函数 4.1.说明 4.2.注意 1.常引 ...
- C++常成员函数 常对象成员
什么是常对象成员,什么是常成员函数? 首先先看一段代码: class A { private:const int a; // 常对象成员,只能在初始化列表赋值public:// 构造函数A() { } ...
- 常对象与常函数(Const修饰的对象与成员函数)
常函数: 其定义与注意事项如下: 1.成员函数后加const后,我们称这个函数为常函数 2.常函数内不可修改成员属性 3.成员属性声明时加关键字mutable后,在常函数中依然 ...
- C++中常对象、常成员函数、常成员变量
用const修饰的类对象叫做常对象, 用const修饰的成员函数叫常成员函数, 用const修饰的成员变量叫常成员变量, 常对象: 型如: const <类名> <对象 ...
- 简单总结 常(常量/const)成员函数 and 常对象的使用
一.常(常量/const)成员函数 在函数定义式()后 + const 比如: class Rational { public://非常成员函数void func() { cout << ...
- 常引用、常对象和对象的常成员
常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.我们经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改. 常引用的声明形式为:const 类型说明符 &引用名 ...
- C++基础知识(常函数和常对象)
1.常函数 void func() const {} 常函数 2.常函数 修饰是 this指针 const Type * const this 3.常函数 不能修饰this指针指向的值 4 ...
最新文章
- redis的增加元素操作
- POJ1080 Human Gene Functions 动态规划 LCS的变形
- c#中已知一个外部窗口的句柄,怎么关闭
- 那些你可能还不知道的新发明
- 在mybatis中调oracle dblink存储过程
- Markdown简介
- selenium python 启动Chrome
- 201621123015《Java程序设计》第11周学习总结
- SQL Server 数据库安装教程SQL Server 2017
- 攻防比赛常见的打点路径有哪些
- 关于如何有效锻炼肌肉的十个小贴士(转)
- 敏捷开发思想之拥抱变化
- 50位中外AI领袖论剑AI World,世界人工智能大会10大亮点全回顾
- IT项目经理成长手记
- Excel中怎么把一数列数据,用逗号隔开合并到一行
- 去哪儿网被央视曝光,其实智慧旅行可以做到更多
- 爬虫前行中(datawhale task2)
- H5中ajax()方法发送网络数据请求
- [十月往昔]——Linux内核中的内存管理浅谈
- json.loads与json.load的区别