C++/Class
2021. 3. 19. 19:37
구성 관계 (Composition Relationship)
몬스터 클래스와 그의 멤버인 좌표 클래스로 비유했다.
Monster
클래스의 멤버로 존재하는Position2D
클래스 인스턴스location_
(Monster.h
참고)이
location_
인스턴스는Monster
클래스로 만들어진mon1
인스턴스의Part-of
라고 할 수 있다.mon1
이 소멸하면 자동으로location_
도 소멸한다.
main.cpp
#include "Monster.h" int main() { using namespace std; Monster mon1("Sanson", Position2D(0, 0)); cout << mon1 << endl; { mon1.moveTo(Position2D(1, 1)); cout << mon1 << endl; } } /* stdout Sanson 0 0 Sanson 1 1 */
Monster.h
#pragma once #include "Position2D.h" class Monster { std::string name_; Position2D location_; public: Monster(const std::string name_in, const Position2D & pos_in) : name_{name_in}, location_{pos_in} {} void moveTo(const Position2D& pos_target) { location_.set(pos_target); } friend std::ostream& operator << (std::ostream& out, const Monster& monster) { out << monster.name_ << ' ' << monster.location_; return (out); } };
Position2D.h
#pragma once #include <iostream> class Position2D { int x_; int y_; public: Position2D(const int &x_in, const int &y_in) : x_(x_in), y_(y_in) {} void set(const Position2D& pos_target) { set(pos_target.x_, pos_target.y_); } void set(const int& x_target, const int& y_target) { x_ = x_target; y_ = y_target; } friend std::ostream& operator << (std::ostream& out, const Position2D& pos) { out << pos.x_ << ' ' << pos.y_; return (out); } };
'C++ > Class' 카테고리의 다른 글
C++ 의존 관계 (Dependency) (0) | 2021.03.19 |
---|---|
C++ 연계, 제휴 관계 (Association) (0) | 2021.03.19 |
C++ 객체들의 관계 (Object Relationship) (0) | 2021.03.19 |
C++ Nested Types (0) | 2021.03.16 |
C++ 익명 객체 (Anonymous Class) (0) | 2021.03.16 |