コンテンツにスキップ

関数#

プログラミングでは、同じ処理を何度も書くのは面倒です。そこで、同じ処理をまとめて名前をつけておくことができます。これを関数と呼びます。

関数の定義#

C++では、関数を定義するには関数の戻り値の型 関数名(引数)という形式で書きます。

戻り値の型 関数名(引数)
{
    // 関数の処理
}
auto 関数名(引数) -> 戻り値の型
{
    // 関数の処理
}

実際に、挨拶を行うプログラムを書いてみましょう。

#include <iostream>

void greet()
{
    std::cout << "Hello" << std::endl;
}

auto greet2() -> void
{
    std::cout << "Hello" << std::endl;
}

int main()
{
    greet();
    greet2();
}

最初のmain関数の中で、greet関数を呼び出しています。


関数の戻り値#

関数は、戻り値を返すことができます。戻り値を返すには、関数の戻り値の型を指定します。

戻り値の型 関数名(引数)
{
    // 関数の処理
    return 戻り値;
}
auto 関数名(引数) -> 戻り値の型
{
    // 関数の処理
    return 戻り値;
}

実際に、挨拶を行うプログラムを書いてみましょう。

#include <iostream>
#include <string>

auto generateGreeting(const int& age, const std::string name) -> std::string
{
    auto age_str = std::to_string(age);
    return age_str + "," + name;
}

void greet()
{
    std::cout << generateGreeting(20, "Taro") << std::endl;
}

int main()
{
    greet();
}

新しく、generateGreeting関数を定義しました。この関数は、agenameを受け取り、Hello, Taro. You are 20 years old.という文字列を返します。



graph TD
    A[mainの開始] --> B[greeetの呼び出し]
    B --> C[generateGreetingの呼び出し]
    subgraph greet
        C --> D[generateGreetingの呼び出し]
    subgraph generateGreeting
        D --> E[引数を受け取る]
        E --> F[文字列を生成する]
        F --> G[文字列を返す]
    end
    G --> H[戻り値を受け取る]
    H --> I[printfの呼び出し]
    I --> J[何も返さない]
    end
    J --> K[mainの終了 0の返却]