반응형
생성자를 사용해 멤버 초기화를 할 수 있다.
#include <iostream>
using namespace std;
class Point {
int xpos;
int ypos;
public:
Point(int x, int y)
{
xpos = x;
ypos = y;
}
int Getx() { return xpos; }
int Gety() { return ypos; }
};
class Rectangle {
Point point1;
Point point2;
public:
Rectangle(int x, int y) :point1(x, y), point2(y, x) {}
void Showinfo()
{
cout << "Point 1 inf" << endl;
cout << "x = " << point1.Getx() << endl;
cout << "y = " << point1.Gety() << endl;
cout << "x = " << point2.Getx() << endl;
cout << "y = " << point2.Gety() << endl;
}
};
int main()
{
Rectangle* rec = new Rectangle(2, 3);
rec->Showinfo();
}
Point 클래스를 Rectangle 클래스에서 사용하고 있고 Rectangle 클래스 객체를 생성자를 사용해서 초기화할 때 멤버 이니셜라이져를 사용해서 Point클래스도 함께 초기화를 할 수 있다.
일반적으로 맴버변수에 초기화에 있어서 이니셜라이저를 선호하는 편이라고 한다. 그 이유는 다음에 두 가지 이점 때문이다.
1. 초기화의 대상을 명확히 인식할 수 있다.
2. 성능에 약간의 이점이 있다.
또한 많은 C++ 프로그래머들은 이니셔라이저가 더 명확한 표현이라고 생각한다. (C++ 창시자의 의견이디곧 하다.
반응형
'c++ > 클래스의 완성' 카테고리의 다른 글
[C++] 객체 배열과 포인터 배열 (0) | 2023.01.02 |
---|---|
[C++] 생성자 (Constructor) (0) | 2023.01.01 |