C++中const有什么作用

  • const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。
  • const修饰函数形式参数:当输入参数为用户自定义的类型和抽象数据类型时,应该将值传递改为const &传递,可以提高效率。
cpp 复制代码
void fun(A a);
void fun(A const &a);

第一个函数的效率低。函数体内产生A类型的临时对象用于复制参数a,临时对象的构造,复制,析构过程都将消耗时间。而第二个函数提高了效率。用引用传递不需要产生临时对象,节省了临时对象的构造,复制,析构过程消耗的时间。但是光引用有可能改变a,所以加const。

  • const修饰函数的返回值:如给"指针传递"的函数返回值加const,则返回值不能被直接修改,且该返回值只能被赋值给加const修饰的同类型指针,例如:
cpp 复制代码
const char *GetChar(void) {};
char *ch = GetChar(); // 这个是错误的
const char *ch = GetChar(); // 这个是对的
  • const修饰类成员函数:任何不会修改数据成员的函数都应用const修饰,这样,当不小心修改了数据成员或者调用了非const成员函数时,编译器都会报错。const修饰类成员函数形式为:
cpp 复制代码
int GetCount(void) const;
相关推荐
Ronaldinho Gaúch21 分钟前
算法题中的日期问题
开发语言·c++·算法
zenpluck1 小时前
RTAB-Map学习记录(1)--论文阅读
c++·论文阅读·学习·机器人
郝学胜-神的一滴1 小时前
Effective Modern C++ 条款36:如果有异步的必要请指定std::launch::async
开发语言·数据结构·c++·算法
小此方2 小时前
Re:从零开始的 C++ STL篇(六)一篇文章彻底掌握C++stack&queue&deque&priority_queue
开发语言·数据结构·c++·算法·stl
0 0 02 小时前
CCF-CSP 40-2 数字变换(transform)【C++】考点:预处理
开发语言·c++·算法
无忧.芙桃2 小时前
继承的篇章
c++
头发够用的程序员2 小时前
Python 魔法方法 vs C++ 运算符重载全方位深度对比
开发语言·c++·python
不吃鱼的猫7483 小时前
【从零手写播放器:FFmpeg 音视频开发实战】04-封装格式与多媒体容器
c++·ffmpeg·音视频
星火开发设计3 小时前
异常规范与自定义异常类的设计
java·开发语言·前端·c++
小卓(friendhan2005)3 小时前
高并发内存池
c++