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 ;
}

最新文章

  1. java动手动脑和课后实验型问题String类型
  2. UTL_FILE
  3. 【WP8】扩展CM的WindowManager
  4. Android -- NDK开发入门
  5. Write a program to convert decimal to 32-bit unsigned binary.
  6. HDU 4821 String hash
  7. Let&#39;s go! (Ubuntu下搭建Go语言环境)
  8. 字符串时间日期转为Date格式和long格式
  9. 分布式服务弹性框架“Hystrix”实践与源码研究(一)
  10. MSSQL 清空日志 删除日志文件
  11. 串string (KMP)
  12. Canvas绘制一个大鱼喂小鱼的游戏
  13. [Codeforces 864C]Bus
  14. 《java入门》第一季之类(String类字符串一旦被赋值就没法改变)
  15. CRM客户关系管理系统(九)
  16. ADRC-active disturbance rejection control-自抗扰控制器
  17. php树形结构数组转化
  18. vue: WebStorm设置快速编译运行
  19. react-native-background-job——让你的react-native项目实现后台运行
  20. ODBC 驱动程序管理器 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 解决方案

热门文章

  1. vue 异步渲染
  2. react-router4的使用备注
  3. 在DoNetMVC中使用控制反转和依赖注入【DI】
  4. 基于TCP协议的远程终端控制并发socketserver实现以及粘包问题处理
  5. 常用docker管理UI
  6. R语言包在linux上的安装等知识
  7. 执行chmod -R 777 / 补救
  8. ML.NET学习笔记 ---- 系列文章
  9. BZOJ1499: 瑰丽华尔兹(单调队列)
  10. 小a与军团模拟器