연산자 오버로딩 (Operator Overloding)
작성자 : 김문규
최초 작성일 : 2009. 1.28
1. 들어가며
클래스끼리도 연산이 필요할 때가 있습니다. 단순한 예로 string + string = concatenated string 입니다. 바로 어떻게 하면 되는 지 간단하게 알아 보겠습니다.
2. 연산자 오버로딩
반환타입 operator 연산자 (인자...)
뭐 감이 오지 않습니다. 예제를 보세요.
결과는 아래와 같습니다.
주목할 부분은 빨간색으로 표시된 부분입니다. 입력 인자와 반환 객체의 관계만 잘 이해하면 됩니다.
예시에서는 _in은 CStr b가 됩니다. 그리고 this는 CStr a가 됩니다.
3. 마치며
간단하지만 엄청나게 유용하고 자주 사용하는 기술입니다. 꼭 알아둡시다.
작성자 : 김문규
최초 작성일 : 2009. 1.28
1. 들어가며
클래스끼리도 연산이 필요할 때가 있습니다. 단순한 예로 string + string = concatenated string 입니다. 바로 어떻게 하면 되는 지 간단하게 알아 보겠습니다.
2. 연산자 오버로딩
반환타입 operator 연산자 (인자...)
뭐 감이 오지 않습니다. 예제를 보세요.
#include <iostream>
#include <string>
#include <string>
using namespace std;
class CStr
{
public:
CStr(string _in) : m_pString(_in) {}
CStr operator + (CStr _in);
string getStr() { return m_pString; }
{
public:
CStr(string _in) : m_pString(_in) {}
CStr operator + (CStr _in);
string getStr() { return m_pString; }
private:
string m_pString;
};
string m_pString;
};
CStr CStr::operator + (CStr _in)
{
m_pString += _in.m_pString;
return *this;
}
{
m_pString += _in.m_pString;
return *this;
}
int main(){
CStr a("aaa");
CStr b("bbb");
CStr a("aaa");
CStr b("bbb");
CStr c = a + b;
cout << c.getStr() << endl;
return 0;
}
}
결과는 아래와 같습니다.
주목할 부분은 빨간색으로 표시된 부분입니다. 입력 인자와 반환 객체의 관계만 잘 이해하면 됩니다.
예시에서는 _in은 CStr b가 됩니다. 그리고 this는 CStr a가 됩니다.
3. 마치며
간단하지만 엄청나게 유용하고 자주 사용하는 기술입니다. 꼭 알아둡시다.
'개발 노트' 카테고리의 다른 글
[C/C++] 매크로 함수 (2) | 2009.01.30 |
---|---|
[C/C++] Singleton Class (싱글톤 클래스) (11) | 2009.01.29 |
[C/C++] 동적 바인딩, virtual의 사용 (0) | 2009.01.28 |
객체 지향의 원칙 (0) | 2009.01.23 |
[C/C++] 도메인 이름 -> IP 주소 변환하기 (Domain Name Resolution) (0) | 2009.01.22 |