그냥 하다보니까... 비슷해보였다. C++의 .h
파일(헤더 파일)은 자바의 인터페이스와 완전히 동일한 개념은 아니지만, 몇 가지 공통점이 있다. 그러나 기능적으로는 훨씬 더 다양하게 사용된다. 이를 이해하려면 .h
파일의 역할과 자바 인터페이스의 차이점을 비교해야 한다.
헤더 파일은 주로 선언(declaration)을 포함하고, 정의(definition)는 소스 파일(.cpp
)에 작성한다.
.cpp
파일에서 공통으로 사용할 수 있도록 공유 코드 제공.헤더 파일: MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {
public:
void sayHello(); // 함수 선언
};
#endif
소스 파일: MyClass.cpp
#include "MyClass.h"
#include <iostream>
void MyClass::sayHello() { // 함수 정의
std::cout << "Hello, World!" << std::endl;
}
사용 파일: main.cpp
#include "MyClass.h"
int main() {
MyClass obj;
obj.sayHello();
return 0;
}
.cpp
파일에서 이루어집니다.C++의 .h
파일이 자바의 인터페이스와 닮은 부분이 있다:
1. 공통 인터페이스 제공:
.cpp
파일에서 이루어진다.헤더 파일은 단순 선언이다:
구조의 유연성:
템플릿과 매크로:
C++ 헤더 파일에는 자바의 인터페이스에서 찾아볼 수 없는 고유 기능이 있다:
헤더 파일에 템플릿 클래스를 정의할 수 있다.
#ifndef MYTEMPLATE_H
#define MYTEMPLATE_H
template <typename T>
class MyTemplate {
public:
T add(T a, T b) { return a + b; }
};
#endif
헤더 파일에 매크로를 정의할 수 있다.
#ifndef MYHEADER_H
#define MYHEADER_H
#define PI 3.14159
#endif
헤더 파일을 사용하면 컴파일러가 선언을 미리 알고 최적화를 수행할 수 있다.
자바:
C++:
C++의 .h
파일은 자바의 인터페이스와 유사하게 코드의 선언부를 제공하지만, 자바 인터페이스와는 달리 다음과 같은 점에서 더 강력하고 유연하다:
1. 단순 선언뿐만 아니라 매크로, 템플릿, 전역 변수 등 다양한 요소를 포함할 수 있음.
2. 선언과 구현을 분리하여 코드 구조를 명확히 함.
3. 구현 강제성은 없으며, 단순히 참조를 위한 선언부로 동작.
C++ 헤더 파일의 역할은 자바 인터페이스보다 더 광범위하지만, 선언과 구현의 분리라는 철학적 기반은 비슷하다고 볼 수 있다. 😊