const函数
在 C++ 中,const 成员函数(常量成员函数)是指被 const 关键字修饰的类成员函数。它在函数声明和定义的参数列表后添加 const 关键字,表示该函数不会修改类的成员变量(除非成员被声明为 mutable)。
核心特性:
-
不修改对象状态
- 在
const函数内部,所有非mutable成员变量被视为只读,修改它们会导致编译错误。 - 只能调用其他
const成员函数(防止间接修改状态)。
- 在
-
支持常量对象调用
- 常量对象(如
const MyClass obj;)只能调用const成员函数。 - 非常量对象可以调用
const和非const函数(优先匹配非const版本)。
- 常量对象(如
-
重载依据
- 相同函数名的
const和非const版本构成重载,编译器根据对象的常量性选择调用:class MyClass { public: void foo(); // 非 const 版本 void foo() const; // const 版本(重载) };
- 相同函数名的
示例代码:
#include <iostream>
class Counter {
private:
int count; // 普通成员
mutable int accessCount; // mutable 成员(可在 const 函数中修改)
public:
Counter() : count(0), accessCount(0) {}
// const 成员函数
int getCount() const {
// count = 10; // 错误!不能修改非 mutable 成员
accessCount++; // 正确:mutable 成员可修改
return count;
}
// 非 const 成员函数
void increment() {
count++;
}
};
int main() {
const Counter c1; // 常量对象
// c1.increment(); // 错误!常量对象不能调用非 const 函数
std::cout << c1.getCount(); // 正确:调用 const 函数
Counter c2; // 非常量对象
c2.increment(); // 正确
c2.getCount(); // 正确:非常量对象可调用 const 函数
return 0;
}
关键用途:
-
增强代码安全
防止函数意外修改对象状态(编译器强制检查)。 -
支持常量对象的操作
确保常量对象能调用不改变状态的函数。 -
明确设计意图
通过函数签名表明其是否修改对象状态,提升代码可读性。
最佳实践:如果成员函数不会修改对象状态,应将其声明为
const。
求助,关于const char *p参数的函数和中断赋值的问题
假设一个带有 const char *p参数的函数 在此函数中 p指向一个全局变量(p= a) 然后我在中断里给此全局变量赋值(a=1) 如果程
Linux驱动函数接口说明
函数接口说明 创建目录、文件函数: /* 创建目录 */ struct dentry *debugfs_create_dir( const ch
2023-09-27 11:20:03
const 和指针变量使用
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定
2023-06-22 10:43:00
带你在单片机编程中熟练使用const(可下载)
在 C 语言关键字中 const 举足轻重,我们今天就深度聊一聊 const 的定义和实际应用,让它 不再是迷C 语言中 const 关键字是
资料下载
松山归人
2025-04-01 14:18:15
C语言相关文件函数的功能与用法详细说明
fopen(打开文件) 相关函数 open,fclose 表头文件 #include《stdio.h》 定义函数 FILE * fopen(
资料下载
POPO升级中
2019-12-04 08:00:00
C语言中的const与readonly有哪些相同和不同点
以前只是用const与readonly声明常量,今天在网上看了它们的一些其它属性,觉得有必要弄清楚它们的用法与异同,所以动手找了找,也写了几行代码以呈现,还望大家给予指点。
资料下载
佚名
2019-11-07 15:54:19
Keil C51中的const与code的讲解
在Keil 51中,code修饰的变量放在ROM(Flash)中,而const修饰的变量为只读(不可修改),放在RAM中!可以用“code const”修饰变量,表示变量存储在ROM中,且为只读
资料下载
笑尽往事
2019-09-04 17:27:00
单片机程序为什么必须要包含CONST H
下面就介绍一下在我的单片机程序里必须要包含的一个头文件----“const.h”,完整内容如下:
资料下载
h1654155275.0032
2019-08-15 17:32:00
C语言中const的用法介绍
C语言标准库中很多函数的参数都被 const 限制了,但我们在以前的编码过程中并没有注意这个问题,经常将非 const 类型的数据传递给
2023-01-05 10:03:42
C++中const以及this指针的使用
的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改; 修饰成员函数,说明该成员
2021-09-23 11:39:48
memcpy函数实现及其优化
函数原型void * memcpy ( void * destination, const void * source, size_t num );
2020-12-09 14:25:18
请问const quaternion * attitude_getAttitude(void)这个函数什么类型的?
帮忙分析一个函数const quaternion * attitude_getAttitude(void){ return &attitude;}其中typedefstruct{ float
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览