C++ のビルドとコンパイル
CoddyのC++ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 2/104。
C++のビルドは、プリプロセス、コンパイル、リンクの3つの段階で行われます。
1. プリプロセッシング — #include ディレクティブが解決され、ヘッダーの内容がソースファイルにコピーされます
#include <iostream> // システムヘッダー
#include "my_file.h" // 自作のヘッダー2. コンパイル — 各 .cpp ファイルは独立してオブジェクトファイル(.o)にコンパイルされます
// math_utils.cpp は math_utils.o にコンパイルされます
// main.cpp は main.o にコンパイルされます3. リンキング — オブジェクトファイルが結合され、最終的な実行ファイルになります
// math_utils.o + main.o → program.exeヘッダーファイルは何が存在するか(プロトタイプ)を宣言します。.cpp ファイルは実際の定義(実装)を提供します。リンカーは main.cpp 内の呼び出しを他の .cpp ファイル内の実装に接続します。
チャレンジ
中級ヘッダーファイル math_utils.h は2つの関数を宣言しています。これらを math_utils.cpp で実装してください:
doubleValue(int x)—x * 2を返しますsquare(int x)—x * xを返します
.cpp ファイルにヘッダーファイルをインクルードすることを忘れないでください。
チートシート
C++のビルドは、プリプロセス、コンパイル、リンクの3つのステージで行われます。
プリプロセス — #include ディレクティブが解決され、ヘッダーの内容がソースファイルにコピーされます:
#include <iostream> // システムヘッダー
#include "my_file.h" // 自作のヘッダーコンパイル — 各 .cpp ファイルは独立してオブジェクトファイル (.o) にコンパイルされます:
// math_utils.cpp は math_utils.o にコンパイルされます
// main.cpp は main.o にコンパイルされますリンク — オブジェクトファイルが結合され、最終的な実行ファイルが作成されます:
// math_utils.o + main.o → program.exeヘッダーファイルは何が存在するか(プロトタイプ)を宣言します。.cpp ファイルは実際の定義(実装)を提供します。リンカーは main.cpp 内の呼び出しを他の .cpp ファイル内の実装に接続します。
自分で試してみよう
#include <iostream>
#include "math_utils.h"
int main() {
int num;
std::cin >> num;
std::cout << "Double: " << doubleValue(num) << std::endl;
std::cout << "Square: " << square(num) << std::endl;
std::cout << "Build successful" << std::endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
3コンストラクタとデストラクタ
デフォルトコンストラクタ引数付きコンストラクタコピーコンストラクタムーブコンストラクタコンストラクタ初期化リスト委譲コンストラクタデストラクタ詳解Rule of Three / Five / Zeroまとめ - Stringクラス6演算子オーバーロード
演算子オーバーロード入門算術演算子のオーバーロード比較演算子のオーバーロードストリーム演算子代入演算子のオーバーロード[] と () 演算子のオーバーロード型変換演算子まとめ:Matrix クラス