ヘッダーファイルとソースファイル
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ヘッダーガード(#ifndef、#define、#endif)は、ヘッダーファイルが複数回インクルードされるのを防ぎます。.hファイルは何が存在するか(プロトタイプ)を宣言し、.cppファイルはそれがどのように動作するか(実装)を定義します。
チャレンジ
中級ヘッダーファイルとソースファイルに分けて、3つのヘルパー関数を作成してください。
helpers.h: ヘッダーガード付きの関数宣言helpers.cpp: 関数の実装
作成する関数:
greet(name):"Hello, <name>!"を返すageInTenYears(age):age + 10を返すcheckAdult(name, age): age >= 18 の場合は"<name> is an adult"を返し、それ以外の場合は"<name> is a minor"を返す
自分で試してみよう
#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++オンラインコンパイラ