[C/C++] 연산자 오버로딩 (Operator Overloding)

개발 노트 2009. 1. 28. 17:09 posted by 무병장수권력자


연산자 오버로딩 (Operator Overloding)

작성자 : 김문규
최초 작성일 : 2009. 1.28

1. 들어가며
클래스끼리도 연산이 필요할 때가 있습니다. 단순한 예로 string + string = concatenated string 입니다. 바로 어떻게 하면 되는 지 간단하게 알아 보겠습니다.

2. 연산자 오버로딩

반환타입 operator 연산자 (인자...)

뭐 감이 오지 않습니다. 예제를 보세요.
#include <iostream>
#include <string>
using namespace std;
class CStr
{
public:
 CStr(string _in) : m_pString(_in) {}
 CStr operator + (CStr _in);
 string getStr() { return m_pString; }
private:
 string m_pString;
};
CStr CStr::operator + (CStr _in)
{
 m_pString += _in.m_pString;
 return *this;
}
int main(){
 CStr a("aaa");
 CStr b("bbb");
 CStr c = a + b;
 cout << c.getStr() << endl;
 return 0;
}

결과는 아래와 같습니다.


주목할 부분은 빨간색으로 표시된 부분입니다. 입력 인자와 반환 객체의 관계만 잘 이해하면 됩니다.
예시에서는 _in은 CStr b가 됩니다. 그리고 this는 CStr a가 됩니다.

3. 마치며
간단하지만 엄청나게 유용하고 자주 사용하는 기술입니다. 꼭 알아둡시다.