LANG/C++

[C++]10-3.교환법칙 문제의 해결

혀니리리 2023. 5. 18. 13:49
728x90

교환법칙: A+B의 결과는 B+A의 결과와 같음

연산자를 중심으로 한 피연산자의 위치는 연산 결과에 아무런 영향을 미치지 X
(Ex) 곱셈연산, 덧셈연산)

이를 위해 오버로딩도 교환법칙이 성립되도록 작성해야 함.

#include <iostream>
using namespace std;

class Point
{
private:
	int xpos, ypos;
public:
	Point(int x = 0, int y = 0): xpos(x), ypos(y)
    {}
    void ShowPosition() const
    {
    	cout << '[' << xpos << ", " << ypos << ']' << endl;
    }
    Point operator*(int times)
    {
    	Point pos(xpos *times, ypos *times);
        return pos;
    }
    friend Point operator*(int times, Point& ref);
};

Point operator*(int times, Point& ref) //교환법칙 성립을 목적으로 추가된 함수
{
	return ref*times;
}

int main(void)
{
	Point pos(1, 2);
    Point cpy;
    
    cpy = 3 * pos;
    cpy.ShowPosition();
    
    cpy = 2 * pos * 3;
    cpy.ShowPosition();
    return 0;
}

결과)

[3, 6]

[6, 12]

 

요런식으로 할 수 있듬..

728x90