GetcomputerFishes 함수의 반환 값 유형은 vector<ComputerFish *>, 즉 값으로 반환되는 동시에 반환 문의 표현식은 computerFishes이므로 여기서는 임시 객체가 복사되고 먼저 생성된 다음 임시 객체가 반환됩니다(참고: 복사 생략으로 인해 이 임시 객체는 실제 런타임 중에 실제로 복사 및 생성되지 않을 수 있습니다). 즉, 반환되는 객체는 MyClass의 멤버변수가 아니고, 이 멤버변수를 복사하여 생성한 임시객체이므로 주소가 다르다. (참고: 값으로 호출할 때 표현식 유형은 rvalue입니다. 사용자 코드는 반환 값의 주소를 직접 가져올 수 없습니다. 즉, &x.GetcomputerFishes()할 수 없습니다. 하지만 lvalue로 변환한 후 주소를 가져올 수 있습니다.)
GetcomputerFishes에서 반환된 개체를 ComputerFishes로 만드는 방법은 무엇입니까?
이 함수가 MyClass의 전용 멤버인computerFishes를 반환하도록 하려면 참조로 반환을 사용할 수 있습니다.
으아악
이 함수 오버로드 세트는 각각 const MyClass 객체와 non-const MyClass 객체에 대한 지원을 제공합니다.
그런 다음 반환 값을 사용하여 참조 변수를 초기화할 수 있습니다(비참조 변수를 초기화하고 초기화 복사할 수도 있음).
물론 반환된 벡터 값은 동일한 주소가 아니며 반환된 벡터 값이 복사되었습니다.
포인터와 const 포인터를 반환할 수 있습니다.
에서 반환된 값은 물론 복사되었습니다. 믿을 수 없다면
.GetcomputerFishes
의 반환 값을 변경하여this->computerFishes
의 데이터가 일치하는지 확인할 수 있습니다GetcomputerFishes
함수의 반환 값 유형은vector<ComputerFish *>
, 즉 값으로 반환되는 동시에 반환 문의 표현식은computerFishes
이므로 여기서는 임시 객체가 복사되고 먼저 생성된 다음 임시 객체가 반환됩니다(참고: 복사 생략으로 인해 이 임시 객체는 실제 런타임 중에 실제로 복사 및 생성되지 않을 수 있습니다). 즉, 반환되는 객체는 MyClass의 멤버변수가 아니고, 이 멤버변수를 복사하여 생성한 임시객체이므로 주소가 다르다. (참고: 값으로 호출할 때 표현식 유형은 rvalue입니다. 사용자 코드는 반환 값의 주소를 직접 가져올 수 없습니다. 즉,&x.GetcomputerFishes()
할 수 없습니다. 하지만 lvalue로 변환한 후 주소를 가져올 수 있습니다.)이 함수가 MyClass의 전용 멤버인computerFishes를 반환하도록 하려면 참조로 반환을 사용할 수 있습니다.
으아악이 함수 오버로드 세트는 각각 const MyClass 객체와 non-const MyClass 객체에 대한 지원을 제공합니다.
그런 다음 반환 값을 사용하여 참조 변수를 초기화할 수 있습니다(비참조 변수를 초기화하고 초기화 복사할 수도 있음).
으아악물론 함수 반환 값을 통해 직접 액세스할 수도 있습니다.
으아악