我有一个简单的问题。这是我的C ++代码:
#include <iostream>
using namespace std;
void example(const int someArgument)
{
cout << someArgument << endl;
}
int main()
{
int someArgument = -1;
example(someArgument);
}
运行example(someArgument)
是否在someArgument
的内存中复制,或者只将地址传递给变量?我假设编译器“知道”我不会通过使用const关键字来修改它,因此不必进行复制。我错了吗?
答案 0 :(得分:5)
你正在传递价值,是的,它会复制。
如果您不想复制,请通过指针或引用传递参数。但是,在这种情况下,您传递一个int,所以我不担心按值传递。
我的经验法则是按值传递基本类型,如果可能的话,通过const引用传递所有其他类型。
答案 1 :(得分:0)
关键字 const 不会告诉您是否复制该变量,您基本上有3个选项......
void example(const int someArgument)
void example(const int& someArgument)
void example(const int* someArgument)
你拥有的那个是你给出的论点的副本并写入 someArgument 变量..
所以用 void example(const int someArgument)你传递的值是一个整数,所以是一个副本(你不能改变,因为它是const)