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;
相关推荐
ComputerInBook10 分钟前
C++ 17 相比 C++ 14 新增之特征
开发语言·c++·c++ 17
Peter·Pan爱编程24 分钟前
引用:比指针更安全的别名
c++·指针·引用·c++基础
m0_5027249525 分钟前
golang 、java、c++、javascript 语言switch case异同
java·javascript·c++·golang
我命由我1234525 分钟前
Android Framework P1 - 低配学习 Framework 方案、开机启动 Init 进程
android·c语言·c++·学习·android jetpack·android-studio·android runtime
许长安26 分钟前
互斥锁、自旋锁、读写锁使用场景以及底层实现
c++·经验分享·笔记
Season45041 分钟前
C++11并发支持库(condition_variable | future全家桶)
java·jvm·c++
落羽的落羽1 小时前
【项目】C++从零实现JsonRpc框架——项目引入
linux·服务器·开发语言·c++·人工智能·算法·机器学习
Andy1 小时前
C++ 容器适配器_栈_队列_双端队列
开发语言·网络·c++
思麟呀1 小时前
在C++基础上理解Csharp-2
开发语言·jvm·c++·c#
桀人1 小时前
类和对象——上篇
开发语言·c++