1 2 3 4 5 6 7 8 9 10 11 | class Point { private: int x; int y; public: Point(); Point(int a, int b); void print(); }; Point::Point() : x(0), y(0){} Point::Point(int a, int b) : x(a), y(b) {} | cs |
라는 클래스를 하나 만들고
1 2 3 | Circle::Circle(Point p, int r) : center(p), radius(r) {} Circle::Circle(int a, int b, int r) : center(a,b), radius(r) {} | cs |
라는 클래스를 만들었습니다
1 2 3 4 5 6 7 8 9 | Circle::Circle(Point p, int r) { Point center(p); radius = r; } Circle::Circle(int a, int b, int r) { Point center(a, b); radius = r; } | cs |
이렇게 했더니 원하는 결과값이 나오지 않더라구요
근데 멤버 초기화 목록을 이용해서
1 2 3 | Circle::Circle(Point p, int r) : center(p), radius(r) {} Circle::Circle(int a, int b, int r) : center(a,b), radius(r) {} | cs |
이렇게하면 되던데 이게 객체안에 객체가 있을때 이렇다는데 혹시 이거 잘 이해가 가지않는데 왜그런가요 ?
Point center = p;
그렇게 해도 안되던데요 ㅠ
center = p; center = Point(a, b);
Point center(a, b)라고 써버리면 객체 안에 있는 center를 초기화 해주는게 아니라 center라는 지역 변수가 하나 더 생겨버린거 ㅇㅅㅇ
아하 .... 감사합니다 !!