본문 바로가기
C++

C++ 전방선언

by PainDiver 2022. 11. 25.

 

 

면접관이 전방선언에 대해서 물었다.

 

맨날 사용하고있고 너무 쉬운 것이라, 마음이 급하게 말하려던 나머지 말을 진짜 개못했다.

 

다음에는 말 잘하려고 여기서 미리 쉐도우복싱 해본다.

 

전방선언은 다른 헤더파일에 선언되어있는 클래스를 현재 헤더파일에서 타입만 알려주는 용도로 사용한다.

 

현재 헤더파일에 다른 헤더파일을 인클루드 할 시, 현재 헤더파일의 코드양이 방대해질 뿐더러, 만약 현재 헤더파일이 다른곳에서 또 인클루드 되면, 헤더의 코드는 점점 방대해진다, 거기다 운이 없어서 인클루드 한 헤더파일을 우연치 않게 또 인클루드 해버리면 클래스 재정의 오류가 나올 수도 있다.

 

이를 피하기 위해서 cpp파일에 헤더파일을 인클루드 하는것이 좋은데, 이렇게 되면 현재 헤더파일에서는 다른 헤더파일에서 정의된 클래스를 식별하지 못하게 된다. 이 때 사용되는 것이, 전방선언이다. 포인터 타입이나, 함수의 매개변수같이 이름만 사용하는 것에 한해서는 전방선언이 허용되나, 헤더에서 그 클래스의 함수를 사용하거나, 포인터가 아닌 멤버변수로 만들어 버려 생성자가 쓰여야하는 경우에는 전방선언을 사용못한다.

 

한 호흡으로 이렇게 말했어했는데