記事ディレクトリ
ブログの概要:
- 関数を宣言するときは、関数パラメータのデフォルト値を定義します。
- 「デフォルトパラメータ」はパラメータリストの最後に定義する必要があります。
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
请按任意键继续. . .