Menu
Coddy logo textTech

ヘッダーファイルとソースファイル

CoddyのC++ジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 3/104。

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

header guard(#ifndef#define#endif)は、header が複数回インクルードされるのを防ぎます。.h ファイルでは存在するもの(プロトタイプ)を宣言し、.cpp ファイルではその動作方法(実装)を定義します。

challenge icon

チャレンジ

中級

ヘッダーファイルとソースファイルに分けて、3つのヘルパー関数を作成します:

  • helpers.h:header guards を含む関数宣言
  • helpers.cpp:関数の実装

作成する関数:

  • greet(name)"Hello, <name>!"をreturns
  • ageInTenYears(age)age + 10をreturns
  • checkAdult(name, age):age が >= 18 の場合は "<name> is an adult"、それ以外の場合は "<name> is a minor"をreturns

自分で試してみよう

#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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: C++オンラインコンパイラ