28번줄에 참조자의 형태로 객체를 생성하고
CreateInitObj함수의 반환값을 참조하는 형태
의 객체 obj1이 되는 거자나요?
그럼 CreateObj함수를 호출하면서 매개변수로
3을 전달하고
이제 11번줄에서 객체를 동적 할당하면서
17번줄에 생성자를 호출하여 클래스 멤버num을
3으로 초기화하고 그다음에
13번줄에서 *ptr을 참조자형태로 반환하는데
25번줄은
AAA &obj1=&(*ptr)이 되는건가요??
&obj1은=&(힙영역에 할당된 메모리공간)
obj1은 동적할당된 메모리공간의 별칭이 되는거죠??
이제 obj1.ShowNum을 호출하니
아까 private영역의 생성자에서 초기화된
num의 값이 출력되는것이구요
그런데 base객체를 통해 CreateInitObj함수를
호출하는 이유가 뭐죠??
- dc official App
전역선언도 안한 병신같은 코드기 때문이죠
제가 위에 써놓은 설명은 맞는건가요??
reference랑rvalue는 약간 다른 개념이예요 검색해보세염
짧은 학식의 제가 유추하기로는. 생성자가 private이기 때문에 new AAA하면 접근할 수 없고, 따로 접근할 수 있는 방법을 메소드로 만들어놔서 그 메소드를 호출한게 아닐까요^^ - dc App
제가 위에 obj1.ShowNum함수가 호출되기까지 과정을 써봤는데 제가 제대로 이해하고 있는건지 한번 봐주실수있으신가요??
*ptr에 넣은건 new AAA, 그러니까 객체를 생성해서 반환했다고 보시면됩니다 - dc App
굳이 반환을 참조자형으로 반환하는 이유가 있을까요??
참조형을 쓰는 이유에 대해 알아봤는지? *로 전달해도 상관없지만 이후 변수 사용에 편리함이 있어 &로 전달하는거고 - dc App
위에 쓴 '별칭'은 바인딩된 변수가 두개 이상 있는 경우. 그러니까 같은 AAA 객체를 a와 b 모두 가지고 있는 경우를 말하구욘 - dc App
저가 생각한건 *로 전달할때와 &때는 같은거같은데 둘중하나를쓰는경우가 명확하게 다르게 있는것은 아니죠?? 포인터의 사용은 실수를 유발할수도있고 참조자의 형태가 좀더 편한게 있어서 쓰는거죠??
그렇게 알고있네오 - dc App
그럼 25번줄에 함수호출이 완료되어 반환값이 전달된최초의 형태는 AAA &obj1=&(*ptr);이 아니라 AAA &obj1=&ptr; 인가요??
&=*형태겠죠? - dc App
죄송한데 좀더 자세히 풀어써주실수있으신가요??
아 10번줄 보니까 님이쓴게맞네요 - dc App
AAA &obj는 객체가 아니고.. & 붙은건 그냥 참조형임. int &num이 int를 참조하는 객체가 아니듯. &는 주소형임
이거 몇페이지 인가요?
187p요