返回一个 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 对象没有被破坏。我对吗?