const` 关键字位于函数签名的末尾
在 C++ 中,const 关键字可以应用于成员函数,表示该函数不会修改对象的成员变量。
const 出现在 operator->() 成员函数的末尾,这意味着该成员函数在调用时不会修改对象的任何成员变量。
如下:
node* operator->() const { return p; }
1. const 的作用
const关键字位于函数签名的末尾,表示这是一个常量成员函数。- 常量成员函数的主要特性是:它不能修改类的任何非
mutable的成员变量,并且只能调用类的其他const成员函数。
2. 为什么要加 const?
加上 const 的目的是允许该成员函数在一个常量对象上被调用。例如,如果对象是 const,那么只能调用 const 成员函数。
如果你不加 const,在常量对象上调用该成员函数时会出现编译错误。
3. 若不加 const 的问题
如果你没有在 operator->() 的末尾加上 const,你将无法在常量对象上调用它:
const Wrapper w(&n); // 常量对象
// 如果 operator->() 不是 const,下面这行代码会报错
std::cout << w->value << std::endl;
总结:
const成员函数表示函数不会修改对象的成员变量,因此可以在const对象上调用。- 在
operator->()函数末尾加const,允许你在const对象上使用箭头操作符来访问封装的指针。
如果不加const,在const对象上调用该函数时会报错。
const` 关键字位于函数签名的末尾的更多相关文章
- C语言学习及应用笔记之三:C语言const关键字及其使用
在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图. 事实上,无论我 ...
- C/C++中const关键字
http://blog.csdn.net/xdrt81y/article/details/24333335 今天在做一个趋势笔试题的时候,才让我有了系统把const关键字好好总结一下的冲动,因为这个关 ...
- const关键字对C++成员函数的修饰
const对C++成员函数的修饰分为三种:1. 修饰参数:2. 修饰返回值:3. 修饰this指针.简述一下知识点如下,以后找功夫再完善. 1. 对函数参数的修饰. 1)const只能用来修饰输入参数 ...
- 实习第一个月总结(const关键字、条件编译、volatile关键字、#和##的作用、函数指针)
C语言中const关键字的作用: 修饰局部变量或者全局变量,表示变量n的值不能被改变了 修饰指针,分为常量指针与指针常量,也可以两者结合 常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变, ...
- (转) C/C++中const关键字详解
文章转自 http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维 ...
- const关键字祥解
为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...
- C++中const关键字的使用总结
C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
- c++ --> const关键字总结
const关键字总结 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性.const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变 ...
随机推荐
- 在英特尔 Gaudi 2 上加速蛋白质语言模型 ProtST
引言 蛋白质语言模型 (Protein Language Models, PLM) 已成为蛋白质结构与功能预测及设计的有力工具.在 2023 年国际机器学习会议 (ICML) 上,MILA 和英特尔实 ...
- 买卖股票相关算法-动态规划-python
要求1: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计 ...
- JAVA并发编程理论基础
注:本文章是对极客时间<java并发编程实战>学习归纳总结,更多知识点可到原文 java并发编程实战 进行学习.如果侵权,联系删除: 一.并发编程的BUG的源头 1.1 缓存导致的可见性问 ...
- ceph 002 ceph架构 ceph数据存储过程 ceph集群安装
ceph 架构 rgw:实现对象存储 (web的url和swift,s3接口) mon:集群的访问入口 (集群,同时工作,得同步信息.每个mon的ip不一样) mgr:监控 信息收集 web 界面 ( ...
- Jmeter函数助手19-machineName
machineName函数用于获取当前计算机的用户名. 存储结果的变量名(可选)
- 强化学习是否可以AI4Science呢?
最近,华为和Google都推出了AI的天气预报系统(发表了nature.science论文,但是没开放公众使用),可以说这个传统的Science问题已经被AI算法解决,这也说明了传统Science问题 ...
- 东北某海滨城市的某高校的某分校区的校园网登录程序,(python3, 模拟浏览器的登入方式)
前些年写过这个登录程序,过了几年系统有所升级,于是做了一定的修改. 新版本的校园网登录程序依然是模拟浏览器去登录校园网. Python3.7编写. #encoding:UTF-8 from urlli ...
- python报错:Pip 20.3+ break proxy connection
参考: https://www.cnblogs.com/devilmaycry812839668/p/17872452.html =================================== ...
- 国产首款IDE环境:数字广东公司联合麒麟软件打造的国内首款适配国产操作系统、蜘蛛创新的集成开发环境CEC-IDE正式亮相
参考: https://www.youtube.com/watch?v=fOpBEWZVKU0 在中国it历史上继"木兰编程语言(实际上套壳Python),红旗操作系统(实际上套壳Chrom ...
- Tim定时器初始化的方法
#include "stm32f10x.h" // Device header void TimerInit(void) { RCC_APB1PeriphClockCmd(RCC_ ...