foo(const int&variable)与C ++中的foo(int variable)有何不同?

时间:2018-07-13 18:10:10

标签: c++ parameters const

我知道第一个应该发送对内存中某个值的引用,该值不会被foo()修改

,第二个应该传递值的新副本,然后

如果我有这样的程序

#include <iostream>

void foo ( const int& var ) {...}

int main ( void )
{
  foo ( 3 );
  return 0;
}

编译器不应该说“ 3不是对int变量的引用”吗?

我认为使用对已在内存中的变量的引用会更有效(使用更少的空间),但是我希望它会引发错误或警告,除非是这样的情况

...
int main ( void )
{
  int my_var = 3;
  foo ( my_var );
  return 0;
}

因为第一个版本传递的是值,而不是引用(即使引用不是要修改引用值)

是否正在进行某种编译器优化? 那是C ++标准中的某个地方吗? (如果是,是哪一个?我使用了C ++ 11,并且知道较新的版本引入了一些有用的抽象,但是我想我不需要使用其中的任何抽象)

0 个答案:

没有答案