더 리팩토링 친화적 인 C ++ 작성
C ++에서 당신은하지 않습니다 이 전혀 헤더를 사용 할 수 있습니다. C # 또는 Java에서와 마찬가지로 전체 파일을 하나의 파일로 정의 할 수 있습니다. C 개발자는 일반적으로 헤더 파일에 외부 호출 만 유지합니다. 모든 내부 호출은 .c 파일에 정의됩니다. 같은 토큰으로 클래스 / 인터페이스 (순수한 가상 추상 클래스) 등을 위해 C ++ .h 파일을 예약 할 수 있습니다. DLL 외부에서 공유하도록되어 있습니다. 내부 클래스 / 구조 / 인터페이스 등의 경우 필요한 .cpp 파일을 포함하면됩니다.
#include<myclass.cpp>
이것은 가장 보편적 인 접근 방식은 아니지만 합법적 인 C ++입니다. 내부 코드가 모두 가능할 것입니다. 이를 통해 내부 코드 및 클래스 세트가 훨씬 급격하게 변경되는 동시에 라이브러리 외부의 코드 / 실행 가능한 코드와 상호 작용할 수있는보다 안정적인 인터페이스를 제공합니다.
수업 전체를 하나의 파일에 포함 시키면 원하는 것을 쉽게 수행 할 수 있습니다. 메소드의 이름을 바꾸고 메소드가 호출되는 모든 위치를 검색해야하는 문제를 해결하지는 않지만보다 이해하기 쉬운 오류 메시지가 있는지 확인합니다. 헤더가 메소드를 한 가지 방법으로 선언하는 것보다 나쁜 것은 아니지만 다르게 구현합니다. 헤더 파일을 호출하는 다른 코드는 올바르게 컴파일되며 링크 예외가 발생하지만 구현 파일은 메소드가 정의되지 않았다고 불평하는 코드입니다. 실제 클래스 선언에서 모든 메소드를 정의하면 파일에 포함 된 파일에 관계없이 동일한 오류 메시지가 표시됩니다.
이 질문을보고 싶을 수도 있습니다 : C ++ 용 리팩토링 도구
C / C ++가 헤더 / 구현 파일을 해결하는 방법
기본 C 수준에서 (그리고 C ++은 해당 기반을 기반으로 함), 헤더 파일 은 컴파일러가 객체 파일을 생성 할 수있을 정도로 함수 / 구조 / 변수 의 가능성 을 선언 합니다. 마찬가지로 C ++ 헤더 파일은 함수, 구조체, 클래스 등의 약속을 선언합니다. 컴파일러에서 스택 등의 공간을 예약하는 데 사용하는 것은이 정의입니다.
.c 또는 .cpp 파일은 구현되어 있습니다. 컴파일러가 각 구현 파일을 객체 파일로 변환 할 때 구현되지 않은 개념 (헤더에 선언 된 개념)에 연결됩니다. 링커는 다른 객체 파일의 구현에 후크를 연결하고 모든 코드 (공유 라이브러리 또는 실행 파일)를 포함하는 더 큰 바이너리를 만듭니다.
VS 특정
Visual Studio에서 작업하는 것과 관련하여 작업을 좀 더 쉽게 해주는 마법사가 있습니다. 새 클래스 마법사는 일치하는 헤더 및 구현 파일 쌍을 작성합니다. 새로운 메소드를 선언 할 수있는 클래스 브라우저 기능도 있습니다. 헤더의 정의와 .cpp 파일의 구현 스텁을 주입합니다. Visual Studio는 10 년 이상 이러한 기능을 가지고 있습니다 (사용한 한).