将 const 发送到获取非 const 参数的函数会被视为错误吗?

would sending a const to a function that gets a non const param be considered an error?

假设我们有这个函数

void  something(int a)
{}

在 main 函数中我们这样做

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

这会被认为是一个错误吗?

没有

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

 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),即参数上的const是一个实现细节。


当你通过引用传递时很重要:

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

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