int main(void)
{
SelfRef obj(3);
SelfRef &ref=obj.Adder(2);
obj.ShowTwoNumber();
ref.ShowTwoNumber();
ref.Adder(1).ShowTwoNumber().Adder(2).ShowTwoNumber();
return 0;
}
이러한 코드가 있을 때, ref는 객체일까? 아니면 그냥 객체가 아닌 참조자일까?
-> 참조자의 의미를 잘 생각해보시면 될 것 같다.
결국 참조자 &를 사용하면 한 공간에 다른 별명을 붙이게 되는 것이다.
결국 ref도 객체로 보는 것이 맞다. 참조자를 썼다고 객체와 참조자를 따로 구분짓지는 않는다.
(아래는 전체코드이다..)
//참고. 전체 코드
#include <iostream>
using namespace std;
class SelfRef
{
private :
int num;
public:
SelfRef(int n) : num(n)
{
cout<<"객체생성"<<endl;
}
SelfRef& Adder(int n)
{
num+=n;
return *this;
}
SelfRef& ShowTwoNumber()
{
cout<<num<<endl;
return *this;
}
};
int main(void)
{
SelfRef obj(3);
SelfRef &ref=obj.Adder(2);
obj.ShowTwoNumber();
ref.ShowTwoNumber();
ref.Adder(1).ShowTwoNumber().Adder(2).ShowTwoNumber();
return 0;
}
'언어 > C++' 카테고리의 다른 글
[C++] 얕은 복사, 깊은 복사 (0) | 2023.09.25 |
---|---|
[C++] 1. 멤버이니셜라이저(feat. const 변수), 2. 생성자와 소멸자를 이용한 동적할당, 3. this 포인터 (0) | 2023.09.25 |
[C++] *this가 반환 값일 때, 함수의 반환형에 &를 쓰는 이유 (+ this와 *this의 차이) (0) | 2023.09.24 |
[C++] 동적 할당(dynamic allocation) (0) | 2023.09.21 |
[C++] 함수 오버로딩이란? (cf. 함수 오버라이딩) (0) | 2023.09.21 |