Menu
Coddy logo textTech

헤더 파일 및 소스 파일

Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 104개 중 3번째.

C++에서 코드는 선언을 위한 헤더 파일(.h)과 구현을 위한 소스 파일(.cpp)로 나뉩니다.

헤더 가드가 있는 헤더 파일 (helpers.h)

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

구현이 포함된 소스 파일 (helpers.cpp)

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

main에서 사용하기

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

출력:

Hello, Alice!
8

헤더 가드(#ifndef, #define, #endif)는 헤더가 여러 번 포함되는 것을 방지합니다. .h 파일은 무엇이 존재하는지 선언하고(프로토타입), .cpp 파일은 그것이 어떻게 작동하는지 정의합니다(구현부).

challenge icon

챌린지

중급

헤더 파일과 소스 파일로 나누어진 세 개의 헬퍼 함수를 작성하세요:

  • helpers.h — 헤더 가드(header guards)를 포함한 함수 선언
  • helpers.cpp — 함수 구현

작성할 함수:

  • greet(name)"Hello, <name>!"를 반환합니다
  • ageInTenYears(age)age + 10을 반환합니다
  • checkAdult(name, age) — age가 18 이상이면 "<name> is an adult"를 반환하고, 그렇지 않으면 "<name> is a minor"를 반환합니다

치트 시트

C++ 코드는 선언을 위한 헤더 파일(.h)과 구현을 위한 소스 파일(.cpp)로 구성됩니다.

헤더 가드(Header guards)는 중복 포함을 방지합니다:

#ifndef HELPERS_H
#define HELPERS_H
// 여기에 선언 작성
#endif

헤더 파일 (helpers.h)은 함수 선언을 포함합니다:

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

소스 파일 (helpers.cpp)은 구현을 포함합니다:

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

main에서 함수 사용하기:

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

직접 해보기

#include <iostream>
#include "helpers.h"

int main() {
    std::string name;
    int age;
    std::getline(std::cin, name);
    std::cin >> age;
    
    std::cout << greet(name) << std::endl;
    std::cout << "In 10 years you will be " << ageInTenYears(age) << std::endl;
    std::cout << checkAdult(name, age) << std::endl;
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨