내가 모델 객체 ++ 책 내부 C를 읽고 있어요 복사 생성자없이 작업을 NRVO 나는 아래에 일이있어하지 않습니다 내가 아는 한, NRVO이의 복사 생성자를 호출하지 않습니다 함수가 반환하는 클래스. 그래서 "이 첫 번째 버전의 프로그램은 복사 생성자가 없기 때문에 NRV 최적화를 적용하지 않습니다 ..."라는 이유를 이해할 수 없습니다.
VS2010에서이 코드를 실행할 때 NRVO가 적용되지 않습니다. #include <stdio.h>
class A
{
public:
A() { printf("I am in constructor\n"); }
A(const A& a) { printf("I am in copy constructor\n"); }
~A()
방금 RVO (Return Value Optimization) 및 NRVO (Named Return Value Optimization)에 대해 읽었습니다. 다음은 두 가지 예입니다. //Example of RVO
Bar Foo()
{
return Bar();
}
//Example of NVRO
Bar Foo()
{
Ba
은의 우리가이 상황 std::string v_1()
{
return "name";
}
std::string test = v_1();
이 망막 정맥 폐쇄가 여기에 적용되어 있다고 가정 해 봅시다? RVO를 적용하는 규칙 중 하나가 있기 때문에 대답은 '아니오'라고 생각합니다. "함수가 값으로 클래스 유형을 반환하고 return 문의 표현식이
복사 방지 : 나는 매우 간단한 제네릭 튜플 클래스가, 그리고 내가 값을 작성해야 공장을 사용하여 건설. 최소한의 예제 코드는 다음과 같습니다 :는 #include <iostream>
class diagnostics
{
private:
int payload;
public:
diagnostics(int a)
: payloa