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;
相关推荐
uoKent1 天前
构造析构综合练习
c++
FL16238631291 天前
[C++][cmake]基于C++在windows上onnxruntime+opencv部署yolo26-seg的实例分割onnx模型
c++·windows·opencv
小π军1 天前
C++ STL:array容器常见用法
开发语言·c++
暮色_年华1 天前
随想4:从roofline角度分析IO多路复用和B+树的设计思路
c++
Ailsa_Lin_1 天前
【二分】CF1354D Multiset
c++·二分
一只小bit1 天前
Qt MainWindow:主窗口组件的介绍与正确使用
前端·c++·qt
我是一只小青蛙8881 天前
C++核心过渡:类与对象精讲
开发语言·c++
玖釉-1 天前
Windows 下 VS2022 编译运行 Khronos Vulkan Samples 全避坑指南
c++·windows·图形渲染
星火开发设计1 天前
C++ 分支结构:if-else 与 switch-case 的用法与区别
开发语言·c++·学习·算法·switch·知识·分支
txzrxz1 天前
数据结构有关的题目(栈,队列,set和map)
数据结构·c++·笔记·算法··队列