[C++] 関数パラメータの拡張 (デフォルト パラメータ | デフォルト パラメータ定義ルール | デフォルト パラメータはパラメータ リストの最後に定義されます)


ブログの概要:

  • 関数を宣言するときは、関数パラメータのデフォルト値を定義します。
  • 「デフォルトパラメータ」はパラメータリストの最後に定義する必要があります。




1. デフォルトパラメータ




1. デフォルトパラメータの概要


「デフォルト パラメータ」の概念: C++ 言語の関数は、関数を宣言するときに関数パラメータのデフォルト値を定義できます。

「デフォルト パラメータ」操作メカニズム: デフォルト パラメータ値を使用して関数を呼び出すときに、デフォルト値パラメータを含む実際のパラメータが指定されていない場合、コンパイラはコンパイル フェーズ中にデフォルト値を実際のパラメータとして使用します。

「デフォルト パラメーター」を使用すると、関数呼び出しが簡素化され、コードの再利用性が向上します。


2. コード例 - デフォルトパラメータ


次のコードでは、void fun(int num = 5) 関数にデフォルトのパラメーター値 5 が指定されています。

fun 関数が呼び出され、パラメータが渡されない場合は、デフォルトのパラメータ値 5 が使用され、パラメータが渡されない場合、出力される値は 5 になります。

    // 不传入参数 , 使用默认参数值 5 
    fun();

fun 関数が呼び出され、入力パラメータが表示される場合は、入力パラメータが使用されます。入力パラメータが 7 の場合、出力される値は 7 です。

    // 显式传入参数值7
    fun(7);

コード例:

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num = 5) {
    
    
    cout << "num = " << num << endl;
}

int main() {
    
    
    // 不传入参数 , 使用默认参数值 5 
    fun();
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

の結果:

num = 5
num = 7
请按任意键继续. . .

ここに画像の説明を挿入





2. デフォルトパラメータ定義ルール




1. デフォルトパラメータはパラメータリストの最後に定義されます。


「デフォルトパラメータ」はパラメータリストの最後に定義する必要があります。

関数のパラメータ リストに「デフォルト パラメータ」が表示されると、後続のすべてのパラメータにはデフォルト パラメータが必要になります。そうでない場合は、コンパイル中にエラーが報告されます。


2. 否定的な例 - デフォルトパラメータの後に共通パラメータがあり、コンパイル時にエラーが報告されます。


次の関数 void fun(int num, int num1 = 5, int num2) では、3 番目のパラメーター num2 は通常のパラメーターです。最初のデフォルト パラメーターが出現する限り、後続のパラメーターはすべてデフォルト パラメーターである必要があります。


ネガティブなコード例:

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

int main() {
    
    
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

の結果:

1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Hello.cpp
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(7): error C2548: “fun”: 缺少形参 3 的默认实参
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(13,10): fatal error C1903: 无法从以前的错误中恢复;正在停止编译
1>“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\CL.exe”中的内部编译器错误
1>  请选择 Visual C++
1>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

ここに画像の説明を挿入


3. 良い例 - デフォルトのパラメータを最後に配置する必要がある


以下の関数パラメータのうち、num はデフォルト値のない通常のパラメータです。

後の 2 つの num1 と num2 は、デフォルト値を持つパラメータです。

その後、パラメーターがある場合は、デフォルト値も持つ必要があります。

デフォルト値なしでパラメータを設定したい場合は、それを前に置く必要があります。

// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2 = 7) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

完全なコード例:

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2 = 8) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

int main() {
    
    
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

の結果:

num = 5
num = 7
请按任意键继续. . .

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/han1202012/article/details/132670772