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

C++函数参数前添加const关键字与不加的区别是什么

C++函数参数添加const关键字的影响说明

示例代码对比

参数带const的代码

#include <iostream>
using namespace std;

void function1(const int x);

int main(){

};

参数不带const的代码

#include <iostream>
using namespace std;

void function2(int x);

int main(){

};

具体差异(按值传递场景)

你给出的两个示例都属于按值传递参数的场景,参数是外部实参的独立拷贝,const的影响分两种情况:

  • 函数声明阶段:对于按值传递的参数,顶层const会被编译器忽略,void function1(const int x)和void function2(int x)的函数签名完全一致,二者不会构成重载,声明时加不加const对编译器来说没有区别。
  • 函数实现阶段:如果实现时给参数加了const,函数内部就无法修改这个参数的值,任何对该参数赋值的操作都会触发编译报错,相当于强制约束参数为只读,避免误改不需要修改的参数副本,提升代码安全性。

举个实现阶段的例子:

// 带const的实现
void function1(const int x) {
    x = 20; // 编译报错,x是只读变量不允许修改
    cout << x << endl;
}

// 不带const的实现
void function2(int x) {
    x = 20; // 编译合法,修改的只是x的本地拷贝,不会影响外部实参
    cout << x << endl;
}

注意:如果是按引用传递、按指针传递的场景,const的作用会更明显,比如const int& x代表无法通过该引用修改外部实参本身,和按值传递的场景有本质区别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:30:01