Class, Array and this pointer
- 객체 또한 배열의 선언이 가능하나, 배열의 선언과정에서는 호출할 생성자를 별도로 명시하지 못한다. 즉, 배열 생성을 위해서는 반드시 생성자가 정의되어 있어야 한다.
- 배열 선언 시, '객체 배열'과 '객체 포인터 배열'의 차이점을 정확히 이해해야한다. 저장의 대상을 객체로 하고 싶다면 '객체 배열'을 사용하고, 객체의 주소 값으로 할 경우 '객체 포인터 배열'을 사용한다.
- 맴버함수 내에서는 this라는 이름의 포인터를 사용할 수 있다. 이는, 객체 자신을 가리키는 용도로 사용된다. this는 객체자신의 주소 값을 의미한다. 즉, this 포인터는 그 주소 값과 자료형이 정해져 있지 않은 포인터이다.
- this는 객체 자신의 변수 접근에도 도움을 준다. 가령 객체변수중에 num이 있다면, this->num을 통해 접근이 가능한 것이다. 이러한 this를 사용하면 Self-Reference의 반환이 가능하다. 이는 객체 자신을 참조할 수 있는 참조자를 의미한다.
#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();
obj.ShowTwoNumber();
ref.Adder(1).ShowTwoNumber().Adder(2).ShowTwoNumber();
return 0;
}
- 이 과정에서, 하나의 객체만 생성하지만, 객체가 반환하는 참조 값을 대상으로 다양한 방법으로 멤버함수를 호출했다.
- 참조의 정보(참조 값)에 대한 이해
int main(void)
{
int num = 7;
int &ref = num;
}
- 이 경우, 변수 num을 참조할 수 있는 참조의 정보가 전달된다.
'Study > C++' 카테고리의 다른 글
[C++] Friend (0) | 2023.10.06 |
---|---|
[C++] Init (0) | 2023.10.06 |
[C++] Constructor & Destructor (0) | 2023.10.06 |
[C++] Information Hiding (0) | 2023.10.06 |
[C++] OOP; Object-Oriented Programming (0) | 2023.10.06 |