const 참조를 반환하여 혼동 스럽습니다.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 오브젝트가 파괴되지 않는 것이 정확 부재를 개체에 대한 참조를 반환한다. 내가 맞습니까?
간단히't.getData()'에서 직접 생성하지 않고'dataReceivedCpy'를 기본 생성하고 할당하는 이유가 있습니까? 즉,'A dataReceivedCpy {t.getData()};' –
아니요, 단지 설명과 데모 용입니다. (위 코드는 getData가 호출되는 다른 클래스의 멤버 인 dataReceivedCpy입니다.) – Dom