• 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;
}

'⌨️ 개발 > C & C++' 카테고리의 다른 글

[C++] 생성자  (1) 2024.02.05
[C++] 네임스페이스  (0) 2024.02.05
[C++] 다형성  (1) 2024.02.05
[C] Makefile & CMake  (0) 2024.01.23
[C] 전처리기  (0) 2024.01.12