- c++에서는 class에 한해서 연산자 재정의 또는 다중 정의가 가능
- 고려해야 할 요소가 많아질 수 있음
class CMyData
{
public:
void setData(int nParam)
{
MyData = nParam;
}
int getData()
{
return MyData;
}
private:
int MyData;
};
int main(int argc, char* argv[])
{
CMyData a;
CMyData b;
a + b; // Error
return 0;
}
class CMyData
{
public:
void setData(int nParam)
{
m_nData = nParam;
}
int getData()
{
return m_nData;
}
///////////////////
// CMyData를 int로 인식
operator int(void)
{
return m_nData;
}
private:
int m_nData;
};
int main(int argc, char* argv[])
{
CMyData a;
CMyData b;
a + b;
return 0;
}
class CMyData
{
public:
void setData(int nParam)
{
m_nData = nParam;
}
int getData()
{
return m_nData;
}
///////////////////
// CMyData를 int로 인식
operator int(void)
{
return m_nData;
}
void operator=(int nParam)
{
setData(nParam);
}
private:
int m_nData;
};
int main(int argc, char* argv[])
{
CMyData a;
CMyData b;
a.setData(5);
b = 6;
a + b; // 11
return 0;
}
class CMyData
{
public:
void setData(int nParam)
{
m_nData = nParam;
}
int getData()
{
return m_nData;
}
///////////////////
// CMyData를 int로 인식
operator int(void)
{
return m_nData;
}
void operator=(int nParam)
{
setData(nParam);
}
private:
int m_nData;
};
int main(int argc, char* argv[])
{
CMyData a;
CMyData b;
CMyData c;
a.setData(5);
b = 6;
c = a + b; // 11, 이 경우 이동 생성자가 호출됨
return 0;
}