[ Class.h ]
class Test
{
private:
int num;
public:
void Show();
};
[ Class.cpp ]
#include <iostream>
#include "Class.h"
using namespace std;
void Test::Show()
{
cout<<num<<endl;
}
[ Main.cpp ]
#include "Class.h"
int main()
{
Test test1;
test1.Show();
return 0;
}
파일을 총 3개로 분할했을 때의 예시 코드 입니다. (그냥 적은거니 오류는 생각하지 말아주세요.)
Main.cpp에서 #include "Class.h" 문장을 통해 객체 생성을 통해 문제가 없다는건 알겠습니다.
제가 궁금한건 .. 메인 함수에서 Show() 함수를 호출하려면 Class.cpp 파일의 내용을 포함하고 있어야 하는게 아닌가요 ?
Class.cpp의 파일을 포함하는 코드는 Main.cpp에는 없는데 ... Show()함수의 정의를 어떻게 불러오는건지
알고 싶습니다. 고수 분들의 도움 부탁 드립니당 .. 감사합니다.
그러겡 궁금하다... 파일 분할의 근본 원리는?
그게 링커가 해주는 일이야. 컴파일러가 Test::Show()라는 심볼을 남겨두면 링커가 연결을 시켜줌. 근데 링커가 Test::Show()를 못찾으면 그 때 Undefined reference 어쩌구 하는 링커 에러가 나는 거임
정확히는 링커가 아닌 visual studio 같은 ide에서 해주는 거임 즉 project 상에 첨부된 cpp 파일을 모두 컴파일 해서 자동으로 링크 해주는게 ide가 하는 일임,
이건 뭔 참신한 개소리여 ide가 없으면 저게 빌드가 안될 것 같냐