C++の関数は、変数や処理をひとまとめにし、複数回呼び出せる便利な構造です。
関数には 宣言(プロトタイプ) と 定義 があり、main()より上に宣言を書き、下に定義を書くのが一般的です。
書式のイメージ:
// 関数の宣言 int add(int a, int b); int main() { int result = add(3, 5); // 呼び出し return 0; } // 関数の定義 int add(int a, int b) { return a + b; }
C++では、関数を複数のファイルに分けて管理します。これによりプログラムの見通しが良くなり、再利用も容易になります。
役割の違い:
| ファイル | 拡張子 | 主な役割 |
|---|---|---|
| ヘッダファイル | .h または .hpp | 関数やクラスの「宣言」だけを書く |
| ソースファイル | .cpp | 関数やクラスの「定義」(実際の処理)を書く |
書き方の例:
// math.h #pragma once int add(int a, int b); int sub(int a, int b);
// math.cpp #include "math.h" int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; }
// main.cpp #include <iostream> #include "math.h" int main() { std::cout << add(5, 3) << std::endl; std::cout << sub(5, 3) << std::endl; }
💡 ポイント
大きなデータをコピーせずに扱う際に便利です。
const参照とは、実体のアドレスを受け取り、それを変更せずに利用する方法です。
| 種類 | 内容 | 特徴 |
|---|---|---|
| 値渡し | 値をコピー | 安全だが遅い場合もある |
| 参照渡し | 実体を直接操作 | 変更される可能性あり |
| const参照 | 実体を読み取り専用で参照 | 安全で高速 |
メリット
void printName(const std::string& name) { std::cout << "Hello, " << name << std::endl; } int main() { std::string s = "Taro"; printName(s); // 実体を渡す printName("Hanako"); // 一時文字列もOK }
同じ名前の関数を、引数の数・型・順序の違いで複数定義できる機能です。
ポイント
int area(int w, int h) { return w * h; } double area(double r) { return 3.14 * r * r; } int main() { std::cout << area(3, 4) << std::endl; // 長方形 std::cout << area(2.5) << std::endl; // 円 }
C++の関数を応用的に扱うための練習問題です。