#9 C++で学ぶ関数の基本
C++の関数は、使う前に「宣言」しておく必要がある場合があるという、独特のルールを持っています。この記事では、C++における関数の基本と、便利な引数の渡し方を解説します。
関数を作ってみる
void greet(std::string name) {
std::cout << "こんにちは、" << name << "さん" << std::endl;
}
値を返す関数
int add(int a, int b) {
return a + b;
}
デフォルト引数
void greet(std::string name = "ゲスト") {
std::cout << "こんにちは、" << name << "さん" << std::endl;
}
greet(); // こんにちは、ゲストさん
参照渡しで元の値を変更する
C++では、引数の型の後ろに&を付けると「参照渡し」になり、関数の中で引数を変更すると、呼び出し元の変数もそのまま変更されます。
void increment(int& num) {
num++;
}
int age = 20;
increment(age);
std::cout << age << std::endl; // 21
通常の渡し方(値渡し)では、関数の中の変更は呼び出し元に影響しませんが、参照渡しを使うと元の変数を直接書き換えられます。
関数を呼び出す順番に注意
C++では、ある関数を呼び出すコードより前に、その関数の中身(または宣言)が書かれている必要があります。プログラムが大きくなると、まず「宣言」だけを先に書いておき、中身は後ろにまとめて書く、という書き方がよく使われます。
int add(int a, int b); // 宣言
int main() {
int result = add(3, 5); // 呼び出し
}
int add(int a, int b) { // 中身
return a + b;
}
関数のオーバーロード
C++では、同じ名前でも引数の型や数が異なれば、複数の関数を定義できます。
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
呼び出す際に渡した引数の型に応じて、コンパイラが自動的に適切な方を選んで実行してくれます。
C++ならではの注意点
「使う前に定義されていない関数」を呼び出そうとするとエラーになるのは、C++を学び始めた人が最初に驚くポイントです。1つのファイルで完結する小さなプログラムでは、呼び出す関数を先に書いておくことで、宣言を省略できる場合もあります。参照渡しは便利な反面、関数の外から見ただけでは「値が変更されるかもしれない」ことが分かりにくくなるため、本当に変更が必要な場合にだけ使うようにしましょう。
まとめ
C++の関数は、呼び出す順番や宣言のタイミングに注意が必要です。デフォルト引数や参照渡し(&)も含め、プログラムが大きくなったら宣言と中身を分ける書き方も覚えておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
C++をもっと学びたい方には「新・明解C++入門編」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿