ヘッダーファイルとソースファイル
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!
8header guard(#ifndef、#define、#endif)は、header が複数回インクルードされるのを防ぎます。.h ファイルでは存在するもの(プロトタイプ)を宣言し、.cpp ファイルではその動作方法(実装)を定義します。
チャレンジ
中級ヘッダーファイルとソースファイルに分けて、3つのヘルパー関数を作成します:
helpers.h:header guards を含む関数宣言helpers.cpp:関数の実装
作成する関数:
greet(name):"Hello, <name>!"をreturnsageInTenYears(age):age + 10をreturnscheckAdult(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;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
3コンストラクタとデストラクタ
デフォルトコンストラクタパラメータ付きコンストラクタコピーコンストラクタムーブコンストラクタコンストラクタ初期化リスト委譲コンストラクタデストラクタ徹底解説Rule of Three / Five / Zero復習 - Stringクラス6演算子オーバーロード
演算子オーバーロード入門算術演算子のオーバーロード比較演算子のオーバーロードストリーム演算子代入演算子のオーバーロード[] と () の演算子オーバーロード型変換演算子復習 - Matrixクラス自分で練習してみよう: C++オンラインコンパイラ