본문 바로가기

C++

[C++] 생성자에서 포함된 객체 초기화

class Position
{
public:
     int x,y;
     Position(int ax, int ay) { x=ax; y=ay; }
};

class Some
{
     Position Pos;
};

만약 Some의 Pos를 Some의 생성자에서 초기화하려면 어떻게 해야할까?

 

Some(int x, int y) { Pos(x,y); }

위 코드는 오류이다. 객체의 생성자는 객체가 생성될 때 자동으로 호출되는 것으로

Pos의 생성자를 임의로 호출할 수 없다.

 

Some(int x, int y) { Position Pos(x,y); }

위 코드도 성립하지 않는다. 위 코드의 pos는 Some클래스가 가지고 있는 Pos가 아닌

Some 생성자 내의 지역 객체이기 때문이다.

 

Some(int x, int y) : Pos(x,y) { }

그렇기 때문에 초기화 리스트를 이용한다.

Some생성자의 매개변수인 x,y가 Pos의 x,y로 저장된다.

'C++' 카테고리의 다른 글

[C++] this는 포인터다  (0) 2021.12.21
[C++] 포인터와 레퍼런스의 차이  (0) 2021.12.21
[C++] 메모리 누수 체크  (0) 2021.12.20
[C++] 후위연산자  (0) 2021.12.19
[C++] vector vs list  (0) 2021.12.19