9.1 산술 연산자 오버로딩 하기
#include <iostream>
using namespace std;
class Cents
{
private:
int m_cents;
public:
Cents(int cents=0) { m_cents = cents; }
int getCents() const { return m_cents; }
};
Cents operator + (const Cents &c1, const Cents &c2)
{
return Cents(c1.getCents() + c2.getCents());
}
int main()
{
Cents cents1(6);
Cents cents2(8);
// cout << add(cents1,cents2).getCents() << "\n"; Cents add() 일 경우.
cout << (cents1+cents2 + Cents(6)).getCents() << "\n"; //익명 객체 사용
}
Friend 활용
#include <iostream>
using namespace std;
class Cents
{
private:
int m_cents;
public:
Cents(int cents=0) { m_cents = cents; }
int getCents() const { return m_cents; }
friend Cents operator + (const &c1, oncst &c2)
{
return Cents(c1.getCents() + c2.getCents());
}
};
//Cents operator + (const Cents &c1, const Cents &c2)
//{
// return Cents(c1.getCents() + c2.getCents());
//}
int main()
{
Cents cents1(6);
Cents cents2(8);
// cout << add(cents1,cents2).getCents() << "\n"; Cents add() 일 경우.
cout << (cents1+cents2 + Cents(6)).getCents() << "\n"; //익명 객체 사용
// ?: :: sizeof . .* 연산자 오버로딩 X
}
Member로 선언
#include <iostream>
using namespace std;
class Cents
{
private:
int m_cents;
public:
Cents(int cents=0) { m_cents = cents; }
int getCents() const { return m_cents; }
int& getCents() { return m_cents; }
Cents operator + (const &c2)
{
return Cents(this->getCents() + c2.getCents()); // too many parameter라고 에러가 뜨므로 this를 활용
}
};
//Cents operator + (const Cents &c1, const Cents &c2)
//{
// return Cents(c1.getCents() + c2.getCents());
//}
int main()
{
Cents cents1(6);
Cents cents2(8);
// cout << add(cents1,cents2).getCents() << "\n"; Cents add() 일 경우.
cout << (cents1+cents2 + Cents(6)).getCents() << "\n"; //익명 객체 사용
// ?: :: sizeof . .* 연산자 오버로딩 X
}