개발 노트
[C/C++] 연산자 오버로딩 (Operator Overloding)
무병장수권력자
2009. 1. 28. 17:09
연산자 오버로딩 (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. 마치며
간단하지만 엄청나게 유용하고 자주 사용하는 기술입니다. 꼭 알아둡시다.