簡體   English   中英

將引用作為對象傳遞給C ++?

[英]Passing reference as object in C++?

我知道C ++引用不是對象,但是似乎我可以將引用作為對象傳遞。

在下面的代碼中, v1v2是引用,並通過構造函數分配為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參數是否聲明為doubledouble& ,用於初始化它的變量也將更改。

請記住,引用就像是變量的同義詞。 即使C ++標准未指定編譯器必須如何實現引用,但我認識的每個C ++編譯器都將引用實現為指針。 因此,基本上,您無論如何都將變量的內存地址傳遞給函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM