【C++札记】const关键字
C++中const关键字无处不在,我这里做下汇总,作为工具文章方便翻阅。
一:修饰数据成员
修饰的成员一单定义初始化后不能再进行修改,如:
const int a = 10;
a =20; //重新赋值直接会报错
当修饰类的成员函数时,先来段错误的代码
class Student
{
public:
Student(int i)
{
this->age = i; //age是const类型直接复制会报错
}
private:
const int age;
};
解决上面的错误有两种方法
方法一:
使用参数列表的形式(推荐使用)
class Student
{
public:
Student(int i):age(i)
{
}
private:
const int age;
};
方法二:
定义age时直接赋值
class Student
{
public:
Student ();
private:
const int age = 20;
};
二:修饰成员函数
在声明之后,实现体之前
格式为:
类型 函数名(参数....) const
const修饰的成员函数不能修改类中的成员函数,函数中只能调用const修饰的函数。
class Student
{
public:
Student (int i ):age(i)
{
}
void update () const
{
age = age +1; //const 修饰的成员函数不能修改类中的成员变量
display(); //const 修饰的成员函数,函数中只能调用const修饰的成员函数
}
void display()
{
cout << "age:" << endl;
}
private:
int age;
};
三:修饰类对象
const修饰的对象,只能调用const修饰的成员函数
class Student
{
public:
Student (int i ):age(i)
{
}
void update () const
{
cout << "this is update" << endl;
}
void display()
{
cout << "age:" << endl;
}
private:
int age;
};
int main()
{
const Student stu(30);
stu.update();
stu.display(); //const修饰的类对象 只能调用const修饰的成员函数
return 1;
}
成员函数有无const修饰可以构成重载,非const对象调用时优先调用非const修饰的成员函数,如不构成重载也可以调用const修饰成员函数。
class Student
{
public:
Student (int i ):age(i)
{
}
void display()
{
cout << "void display()" << endl;
}
void display() const
{
cout << "display() const" << endl;
}
private:
int age;
};
int main()
{
Student stu(30);
stu.display();
return 1;
}
输出结果:


【C++札记】const关键字的更多相关文章
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- C++中const关键字的使用总结
C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...
- final关键字+const关键字
final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...
- C++学习11 类和new、delete操作符 类与const关键字
如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- 陈正冲老师讲c语言之const关键字
1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...
- C语言之头文件,static与const关键字
[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...
- static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
随机推荐
- Redis存储Hash
结构: 1.存取操作: (1)单个存取: (2)一次存储多个,单个取出: 一次取出多个·: (3)取出全部的键和值: 2.删除: (1)删除单个键值对: (2)删除所有键值对: 3.增加数值: 4.减 ...
- 羊村的OI题解
目录 喜羊羊与灰太狼--仓库管理 喜羊羊与灰太狼--破译密码 喜羊羊与灰太狼--烦恼的礼物 喜羊羊与灰太狼--仓库管理 传送门 水的一批,还让开o2了 就不写了 #include<iostrea ...
- java学习笔记(5) 控制语句、键盘输入
控制语句: java控制可以分为7种: *控制选择结构语句: *if if else *switch *控制循环结构语句: *for *while *do while *改变控制语句顺序: *bre ...
- 区间DP训练
一.石子合并 问题描述 将 n (\(1 \le n \le 200\))堆石子绕圆形操场摆放,现要将石子有次序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并 ...
- 配置Always On AG
1.准备测试环境的服务器 在 Always On AG 中如果需要自动 Failover 至少需要集群中有 3 台服务器,但是我只是测试功能,因此只使用了两台服务器.并且本文不涉及任何 Pacemak ...
- grandle Project sync failed.please fix your project and try again
Android Studio导入项目或者新建项目想运行的时候可能会报错Gradle project sync failed. Please fix your project and try again ...
- 详解CI、CD相关概念
CI:持续集成(CONTINUOUS INTEGRATION)基本概念CI的全称是Continuous Integration,表示持续集成. 在CI环境中,开发人员将会频繁地向主干提交代码.这些新提 ...
- 使用PLSQL导入excel数据至oracle数据库
https://blog.csdn.net/qq_42909551/article/details/82108754 https://jingyan.baidu.com/album/14bd256e2 ...
- android: android 布局中的weight 属性
android: weight是线性布局的特有属性,控件的宽度和高度的不同,也会存在差异. 示例1:将宽度设置为包裹类型wrap_content或0dp <?xml version=" ...
- 用SC命令 添加或删除windows服务提示OpenSCManager 失败5
在安装命令行中安装 windowsOpenSCManager 失败5 的错误,原因是当前用户的权限不足,需要做的是在注册表 HKEY_LOCAL_MACHINE\Software\Microsof ...