<aside> ❗ Operator는 연산자오버로딩에 사용함 = 사용자 연산자 재정의
</aside>
예를들어 어떤 사용자 정의 클래스가 있다고 가정하면
Point p1 = new Point();
Point p2 = new Point();
std::cout<<p1+p2;
p1,p2가 point클래스형식의 멤버이고 (+)가 어떤 식으로 작성하는지 컴파일러는 모르기 때문에
operator를 사용하여 (+)의 의미를 재정의(여기서는 +연산자의 오버로딩)해주는 것이다.
현재 만들고있는 DoublyLinkedList를 예로들어 설명해보겠다.
class DoublyLinkedList
{
private:
int count;
Node<T>* header;
Node<T>* trailer;
public:
class iterator
{
private:
Node<T>* ptr;
public:
iterator() : ptr(NULL) {}
iterator(Node<T>* p) : ptr(p) {}
T& operator*() { return ptr->data; }
iterator& operator++() // ++it
{
ptr = ptr->next;
return *this;
}
}
}
++연산자를 오버로딩하는 과정까지만 잘라서 가져왔다.
<aside> ❗ :(colon)연산자는 initialize list로 초기화에 쓰인다.
</aside>
현재 iterator class가 operator라는 레퍼런스를 가지기 때문에 초기화를 해주는 것이다.
iterator() : ptr(NULL) {}
//iterator를 Null값을 가지는 ptr포인터로 초기화한다는 뜻이다.