如果所有函數需要做的一個參數是看它的價值與價值,不應該你總是擦肩而過不斷引用該參數?參數傳遞禮儀(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