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