0

const 参照を返すことで、まだ少し混乱しています。おそらく、これはすでに議論されていますが、同じものを見つけられなかったので、次のコードを用意しましょう。

#include <vector>
#include <iostream>

struct A
{
    int dataSize;
    std::vector<char> data;
};

class T
{
public:
    T();
    ~T();
    const A& GetData();
private:
    A dataA;
};

T::T() : dataA{1}
{
}

T::~T()
{
}

const A& T::GetData()
{
    return dataA;
}

void main()
{
    T t;
    A dataReceivedCpy = {};
    dataReceivedCpy = t.GetData();

    const A& dataReceivedRef = t.GetData();
    std::cout << dataReceivedRef.dataSize << std::endl;
}

私が電話をかけると、正確にはどうなりますか

dataReceivedCpy = t.GetData();

これは正しいです?私の観点からは、要求された構造体のコピーが作成されますよね?

一方で、

const A& dataReceivedRef = t.GetData();

T オブジェクトが破棄されていない限り、オブジェクト メンバーへの参照を返します。これは正しいことです。私は正しいですか?

4

1 に答える 1