클래스명 객체명(인수)는 클래스에서 매개변수 하나를 인자로 받는 생성자를 호출한다.
두개도 세개도 마찬가지이다. 그렇다면 인수를 넣지 않고 빈괄호만 쓰면 디폴트 생성자를 호출할까?
A a; // A의 디폴트 생성자 호출
A a(); // A의 디폴트 생성자 호출 X
① Position Here;
② Position Here=Position();
③ Position *pPos=new Position;
④ Position *pPos=new Position();
⑤ Position Here();
1~5번중 5번만이 디폴트 생성자를 호출하지 않는다.
5번은 Position 타입을 반환하는 Here이라는 이름의 함수 원형을 선언한 것이다.
int형으로 바꿔 생각하면 이해하기 쉽다.
int func; // 변수
int func();// 함수
첫번째 줄은 int형의 변수지만 두번째 줄은 int를 반환하는 함수 func이다.
바보같지만 당연히 나는 후자도 될거라고 생각했어서 정리해봤다.
'C++' 카테고리의 다른 글
| [C++] 우선순위큐에서 Compare 함수객체 사용 시 true면 우선순위가 낮아진다. (0) | 2025.05.13 |
|---|---|
| [C++] memset으로 배열 초기화 시 0,-1으로만 초기화 가능 (0) | 2023.02.07 |
| [C++] 매개변수로 이중포인터를 사용해야 할 경우 (0) | 2023.02.01 |
| [C++] 우선 순위 큐 정렬 방법 변경 (0) | 2023.01.31 |
| [C++] 부동 소수점 (0) | 2023.01.10 |