You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++示例代码中此处的const修饰符是否有实际存在意义?

#include <iostream>

int square(int const &i) {    
  return i * i;
}

int main() {   
  int side = 5;
  std::cout << square(side) << "\n"; 
}

这里的const完全不是多余写法,核心作用有三个:

  • 明确接口契约:所有调用该函数的开发者都可以直接通过参数声明知道,这个函数不会修改传入的变量,不需要额外阅读函数实现就能放心传参,是C++编码的通用规范。
  • 支持更广的入参范围:如果去掉const,参数变为普通左值引用int &i,那么你将无法向函数传入const修饰的int变量、字面量(比如直接调用square(3))、临时对象,非const左值引用不允许绑定这类值,编译器会直接报错,加了const后这些场景都可以正常适配。
  • 提前拦截编码错误:如果编写函数实现时手误写出了修改i的代码,编译器会直接报错提示,避免这类低级逻辑bug流入运行阶段。

针对int这种体积很小的基础类型,其实直接传值的写法int square(int i)效率和传const引用没有明显差异,也完全可用。这里使用const引用属于通用的编码习惯:如果后续参数替换为大体积的自定义类型(比如大数类、容器类),传const引用可以避免不必要的对象拷贝开销,同时保持接口约束的一致性。


内容的提问来源于stack exchange,提问作者user16062226

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:21:04