10:59 멤버 함수로서 연산자 오버로딩
이럴 때는 비정형적인 예시를 하나 생각해보세요! 물론 논리적인 비약이 많이 섞여있지만, 그래도 저한테는 이해하는데 도움이 조금 되어서 같은 의문을 가지는 다른 분들께도 아주 조금이나마 도움이 되고자 글 남깁니당 오늘 저녁은 밥과 돼지고기를 먹고싶어요. 근데 저는(함수는) 지금 밖에(클래스 밖에) 있어서 밥도 못하고, 돼지고기도 따로 사야해요.#include using namespace std; class Outside { public: enum Cooking { RICE = 1, PORK, }; private: Cooking ingredient; public: Outside(const Cooking ingredient) : ingredient{ingredient} {} Outside(const int ingredient) : ingredient{Cooking(ingredient)} {} Cooking get_ingredient() const {return ingredient;} }; Outside operator + (Outside& o1, Outside& o2) { return Outside(o1.get_ingredient() + o2.get_ingredient()); } int main() { Outside rice(Outside::RICE); Outside pork(Outside::PORK); if(Outside(pork + rice).get_ingredient() == 3) cout 클래스 밖에 있는 함수는 돼지고기도 따로 구하고, 밥도 따로 구해서 식단을 마련해야 해요. 저는(함수는) 집 안에(클래스 안에) 있어요! 그래서 밥은 그냥 여기서 지으면 되고, 돼지고기만 구입하면 돼요!#include using namespace std; class Home { public: enum Cooking { RICE = 1, PORK, }; private: Cooking ingredient; public: Home(const Cooking ingredient) : ingredient{ingredient} {} Home(const int ingredient) : ingredient{Cooking(ingredient)} {} Cooking get_ingredient() const {return ingredient;} Home operator + (Home& o1) { return Home(this->get_ingredient() + o1.get_ingredient()); } }; int main() { Home rice(Home::RICE); Home pork(Home::PORK); if(Home(pork + rice).get_ingredient() == 3) cout 함수가 클래스 안에 있으면, 밥은 그냥 집 안에 있는걸로 만들고(this), 돼지고기만 따로 구해서 식단으로 만들면 돼요! 지금 집 안에 있는 애는 제 친구에요. 물론 친하긴 하지만.. 집에 있는 쌀을 함부로 뒤적거리는건 예의가 아니겠죠? 친구가 둘 다 사온대요! #include using namespace std; class Outside { public: enum Cooking { RICE = 1, PORK, }; private: Cooking ingredient; public: Outside(const Cooking ingredient) : ingredient{ingredient} {} Outside(const int ingredient) : ingredient{Cooking(ingredient)} {} Cooking get_ingredient() const {return ingredient;} friend Outside operator + (Outside& o1, Outside& o2) { return Outside(o1.get_ingredient() + o2.get_ingredient()); } }; int main() { Outside rice(Outside::RICE); Outside pork(Outside::PORK); if(Outside(pork + rice).get_ingredient() == 3) cout 비록 집 안에 있지만, 친구이기 때문에 집 안의 재료를 직접 참고할 순 없고, 쌀과 돼지고기를 직접 구해와야 해요.