c++/클래스의 완성

[C++] 멤버 이니셜라이져 (Member Initializer)

TIM_0529 2023. 1. 1. 06:00
반응형

생성자를 사용해 멤버 초기화를 할 수 있다.

 

#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