将 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
假设我们有这个函数
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