首页 > 解决方案 > 将 const 发送到获取非 const 参数的函数是否会被视为错误?

问题描述

假设我们有这个功能

void  something(int a)
{}

在主要功能中,我们这样做

int main()
{
 const int a=7;
something(a);
}

那会被认为是错误吗?

标签: c++constants

解决方案


不。

当您调用该函数时,会生成参数的副本:

 const int x = 0;
 something(x);

它类似于

 const int x = 0;
 int y = x;          // completely fine, no error

此外,请考虑当您按值传递时,const在参数上使用仅在函数内部很重要:

void  something(const int a)
{
    a = 42; // error, a is const
}

虽然函数的类型实际上是void(int),即conston 参数是一个实现细节。


当您通过引用传递时,这很重要:

 void foo(int& x); // <- modifies parameter

 const int x;
 foo(x);           // error, because x cannot be modified

推荐阅读