0

C++ での参照について理解していることが正しいか、stackoverflow で確認できますか。

私たちが持っているとしましょう

vector<int> a;
// add some value in a
vector<int> b = a; // 1. this will result another exact copy of inclusive of a's item to be copied in b right?
vector<int> &c = a;  // 2. c will reference a right? c and a both "point"/reference to a copy of vector list right?
vector<int> &d = c; // 3. d will reference c or/and a right? now a, c, d all reference to the same copy of variable 
vector<int> e = d;  // 4. e will copy a new set of list from d right (or you can say a or c)?

ありがとう。

4

2 に答える 2

4

おっしゃる通りb、 の別個のコピーでありaa/c/dすべて同じものであり、異なる名前でアクセスできるだけです。

そしてeのコピーですa/c/d

intベクターではなく型を使用してそのコードを複製すると、アドレスで何が起こっているかを確認できます。

#include <iostream>

int main() {
    int a = 7, b = a, &c = a, &d = a, e = d;

    std::cout << "a @ " << &a << '\n';
    std::cout << "b @ " << &b << '\n';
    std::cout << "c @ " << &c << '\n';
    std::cout << "d @ " << &d << '\n';
    std::cout << "e @ " << &e << '\n';

    return 0;
}

その出力は次のとおりです。

a @ 0xbfaff524
b @ 0xbfaff520
c @ 0xbfaff524
d @ 0xbfaff524
e @ 0xbfaff51c

aそして、cdはすべて同じアドレスを持っていますが、bとは異なることがわかりますe

于 2013-08-28T07:42:19.127 に答える
2

ええ、正しく見えます。

cまたはに要素を追加するdと、新しい要素は にも反映されaます。に要素を追加するeと、だけ eがそれらを持ちます。

于 2013-08-28T07:44:18.900 に答える