如果所有函数需要做的一个参数是看它的价值与价值,不应该你总是擦肩而过不断引用该参数?参数传递礼仪(C++)const的&
我的一位同事说,它不小的类型无所谓,但我不同意。
那么,有没有优势,做到这一点:
void function(char const& ch){ //<- const ref
if (ch == 'a'){
DoSomething(ch);
}
return;
}
在此:
void function(char ch){ //<- value
if (ch == 'a'){
DoSomething(ch);
}
return;
}
他们似乎是相同的大小对我说:
#include <iostream>
#include <cstdlib>
int main(){
char ch;
char& chref = ch;
std::cout << sizeof(ch) << std::endl; //1
std::cout << sizeof(chref) << std::endl; //1
return EXIT_SUCCESS;
}
但我不知道这是否总是如此。
我相信我是正确的,因为它不会产生任何额外的开销,这是自我记录。
但是,我想问问社区我的推理和假设是否正确?
你的演示代码似乎表明'sizeof(ch)'和'sizeof(ch)'是一样的 - 是你想要的吗? – 2012-04-21 04:07:38
即使你的意思是'sizeof(chref)'为其中之一,你仍然会得到相同的大小。但是这并不相关,因为当你做'sizeof(chref)'时,它实际上告诉你ch的大小。一旦你初始化了一个引用,它的所有操作就好像他们实际上是在引用上完成的一样。但是这并没有告诉你任何关于编译器的魔法,可能会在幕后进行。 – 2012-04-21 04:10:40
@JonathanLeffler修复 – 2012-04-21 04:23:43