[C++] const和mutable关键字使用方法
2024-10-21 06:38:56
const 修饰的变量为常成员变量,表示此变量不能被修改赋值,并且构造函数中只能用初始化列表的方式初始化,其他初始化方式都是错误的
const 修饰的函数为常成员函数,表示此函数中只能读取成员变量,不能修改成员变量
const 修饰的对象为常对象,常对象保护了对象中所有的数据成员不能被任何函数访问和修改,只能使用常成员函数来访问。
如果一个对象被声明为常对象,它只能调用该对象的 const 型成员函数。
常对象定义格式:
// 下面两种方式都可以
const 类名 对象名;
类名 const 对象名;
mutable 是为了突破 const 的显示而设置的,被 mutable 修饰的变量,将永远可变,即使在 const 修饰的函数中。
#include "iostream" using namespace std; class Student {
private:
const int a;
const int b = ;
int c = ;
mutable int d;
public:
// 只能用初始化列表的方式初始化常量
explicit Student(int a) : a(a) {
// 这种方式初始化常量是错误的
//this->b = 56;
} void print() const {
// 常成员函数中不能修改成员变量
//this->c = 78;
// mutable修饰的变量可以在常成员函数中修改
this->d = ;
cout << a << " " << b << " " << c << " " << d << endl;
} void print1() {
cout << a << " " << b << " " << c << " " << d << endl;
}
}; int main(void) { Student stu1();
stu1.print();
stu1.print1(); const Student stu2();
// 常对象只能调用常成员函数
stu2.print();
// 错误
//stu2.print1(); return ;
}
最新文章
- java动手动脑和课后实验型问题String类型
- UTL_FILE
- 【WP8】扩展CM的WindowManager
- Android -- NDK开发入门
- Write a program to convert decimal to 32-bit unsigned binary.
- HDU 4821 String hash
- Let&#39;s go! (Ubuntu下搭建Go语言环境)
- 字符串时间日期转为Date格式和long格式
- 分布式服务弹性框架“Hystrix”实践与源码研究(一)
- MSSQL 清空日志 删除日志文件
- 串string (KMP)
- Canvas绘制一个大鱼喂小鱼的游戏
- [Codeforces 864C]Bus
- 《java入门》第一季之类(String类字符串一旦被赋值就没法改变)
- CRM客户关系管理系统(九)
- ADRC-active disturbance rejection control-自抗扰控制器
- php树形结构数组转化
- vue: WebStorm设置快速编译运行
- react-native-background-job——让你的react-native项目实现后台运行
- ODBC 驱动程序管理器 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 解决方案