정적 결합

조한별·2022년 4월 12일
0
#include <iostream>

using namespace std;

class Alpha
{
public:
	int num;
};

class Beta : public Alpha
{

};

Alpha operator+(const Alpha& x, const Alpha& y)
{
	Alpha tmp;
	tmp.num = x.num + y.num;
	return tmp;
}

Beta operator+(const Beta& x, const Beta& y)
{
	Beta tmp;
	tmp.num = x.num * y.num;
	return tmp;
}

int main()
{
	Alpha a1;
	Alpha a2;
	a1.num = 10;
	a2.num = 20;

	Beta b1;
	Beta b2;
	b1.num = 10;
	b2.num = 20;

	Alpha a3 = a1 + a2;
	Beta b3 = b1 + b2;

	cout << a3.num << endl;
	cout << b3.num << endl;

	Alpha a4 = b1 + b2;
	//Beta b4 = a1 + a2;
	cout << a4.num << endl;

	Alpha& _ar1 = b1;
	Alpha& _ar2 = b2;

	//오버로딩은 정적타입 결합이다.
	//실제 가르키는 것보다 객체의 타입만 본다.
	Alpha a5 = _ar1 + _ar2;
	cout << a5.num << endl;
}

결과

30
200
200
30
profile
게임프로그래머 지망생

0개의 댓글