c++ - 将 const 发送到获取非 const 参数的函数是否会被视为错误?
问题描述
假设我们有这个功能
void something(int a)
{}
在主要功能中,我们这样做
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
on 参数是一个实现细节。
当您通过引用传递时,这很重要:
void foo(int& x); // <- modifies parameter
const int x;
foo(x); // error, because x cannot be modified
推荐阅读
- javascript - 使用新内容更新加载的 div(刷新)
- ios - Swift Codable 不适用于值数组
- python - 如何配置请求超时以触发“无法建立连接”错误
- vb.net - DataTable 在发布模式下是空的,但不是在调试模式下,虽然我初始化了它
- python - Python - 创建交互式网络图(例如 Plotly)
- python - 变量 tf.Variable 在 TensorFlow Probability 中的梯度为“无”
- python - 在 Python 文件之间导入模块
- google-cloud-platform - 如何在 Google Bigquery 和 Google Storage 的帮助下查找两个文件?
- javascript - 如何通过 JS 更改 CSS 属性并使用过渡?
- visual-studio - F# 断点仅在引发异常后才起作用