将参数作为const传递给内存复制吗?

Mob*_*ent 0 c++ memory optimization pointers reference

我有一个简单的问题.这是我的C++代码:

#include <iostream>
using namespace std;

void example(const int someArgument)
{
    cout << someArgument << endl;
}

int main()
{
    int someArgument = -1;
    example(someArgument);
}
Run Code Online (Sandbox Code Playgroud)

运行example(someArgument)是在内存中复制someArgument还是仅将地址传递给变量?我假设编译器"知道"我不会通过使用const关键字来修改它,因此不需要进行复制.我错了吗?

Ano*_*ail 5

你正在传递价值,是的,它会复制.

如果您不想复制,请通过指针或引用传递参数.但是,在这种情况下,您传递一个int,所以我不担心按值传递.

我的经验法则是按值传递基本类型,如果可能的话,通过const引用传递所有其他类型.

  • 我建议不要将诸如此类的有争议的经验法则作为答案的一部分分享。 (2认同)