[英]Passing reference as object in C++?
我知道C ++引用不是對象,但是似乎我可以將引用作為對象傳遞。
在下面的代碼中, v1
和v2
是引用,並通過構造函數分配為double &v1 = x1
。 然后,從foo()
調用時,我應該有bar(double &)
還是bar(double)
嗎? 基於double &v1 = x1
,不應該有bar(double)
嗎?
這讓我感到困惑。 有人可以解釋嗎?
#include <iostream>
class FooBar
{
private:
double &v1, &v2;
public:
FooBar(double &, double &);
void foo();
void bar(double &);
};
FooBar::FooBar (double &x, double &y): v1(x), v2(y) {}
void FooBar::foo()
{
bar(v1);
bar(v2);
}
void FooBar::bar(double &x)
{
std::cout << x << "\n";
}
int main()
{
double x1 = {0.5}, x2 = {1.5};
FooBar f(x1, x2);
f.foo();
return 0;
}
然后從foo()調用時,我應該有bar(double&)或bar(double)嗎? 基於double&v1 = x1,不應該有bar(double)嗎?
在這種情況下,沒有關系, v1
是一個引用,並且如果您在bar內部進行更改,則無論bar
參數是否聲明為double
或double&
,用於初始化它的變量也將更改。
請記住,引用就像是變量的同義詞。 即使C ++標准未指定編譯器必須如何實現引用,但我認識的每個C ++編譯器都將引用實現為指針。 因此,基本上,您無論如何都將變量的內存地址傳遞給函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.