복사 생성자가 호출 되는 경우 (객체의 리턴)
제가 열혈강의 c++언어 책을 보면서 다시 공부를 하고 있습니다
2008년 이전 책 내용이라서 혹시나 변경되어서 안되는 것인지, 제가 잘못 인지하고 있는 것인지 헤깔려서 질문을 올립니다!
복사 생성자가 호출 되는 경우 중 한 가지가, 함수 내에서 객체를 값에 의해 리턴하는 경우라고 공부를 했습니다.
AAA 라는 클래스 정의가 있고,
그 AAA 에는
AAA(int i);
AAA(const AAA& a);
라고 하는 생성자와 복사생성자가 각각 정의 및 선언이 되어 있습니다.
그리고
AAA func(void)
{
AAA a(10);
return a;
}
int main(void)
{
func();
return 0;
}
이렇게 구현을 했다면 분명 함수를 호출한 영역으로 객체가 복사되어 넘어가면서
복사생성자가 호출 되어야 할 것 같은데 전혀 호출을 하지 않습니다 ㅠㅠ
무엇이 잘못된 건지 지적 부탁드립니다 ㅠㅠ
읽어주셔서 감사합니다!!!!!!!!!
사진은 전체 소스와 실행결과 입니다 (원래는 복사생성자가 실행됬다고 출력이되야하는데 아무것도 출력안되는 실행결과사진..)
소스1
소스2
실행결과
RVO 땜에 그래
RVO 끄는 최적화 옵션 적어줄랬더만 왜 리플이 안올라가냐
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/C_002b_002b-Dialect-Options.html#C_002b_002b-Dialect-Options
여기서 elide 검색해봐 -fno-elide-con... 옵션 넣어주면 됨
됬->됐
되야->돼야
오오감사합니다! kukyakya ㅇㅇ님 맞춤법지적감사합니다ㅋㅋ
닉이다르지만본인입니다 감사합리다ㄲ
값에의한 복사로 인한 낭비 비효율을막을려고반환값최적화가 일어나는건가요??