1. デフォルトパラメータ
1. C/C++関数の空パラメータの違い
- C 言語では、関数がパラメータ リストを指定しない場合、デフォルトで任意の数のパラメータを受け取ることができます。
#include<stdio.h>
void Test()
{
}
int main()
{
Test(10);
Test(10, "hello");
return 0;
}
- C++ では、パラメーターの型が厳密に検出されるため、関数にパラメーター リストがない場合、関数はデフォルトで void になり、パラメーターを受け取りません。
#include<iostream>
using namespace std;
void Test()
{
}
int main()
{
Test(10);
Test(10, "hello");
return 0;
}
2. デフォルトパラメータの概念
デフォルトパラメータは、関数の宣言または定義時に関数のパラメータのデフォルト値を指定します。関数を呼び出すとき、実パラメータが指定されていない場合は仮パラメータのデフォルト値が採用され、それ以外の場合は指定された実パラメータが使用されます。
#include<iostream>
using namespace std;
void Func(int a = 0)//给参数a指定一个缺省值
{
cout << a << endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值,输出为0
Func(10); // 传参时,使用指定的实参,输出为10
return 0;
}
3. デフォルトパラメータの分類
- すべてのデフォルトパラメータ
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
- 準デフォルトパラメータ
void Func(int a, int b = 10, int c = 20)//此时a必须要接受到参数
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
注: 準デフォルトのパラメータは右から左にデフォルト設定する必要があり、デフォルトを分離することはできません。
void Func(int a=10, int b , int c = 20)//报错
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
2. 注意すべき事項
- 準デフォルトのパラメータは、右から左に順番に指定する必要があり、交互に指定することはできません。
#include<iostream>
using namespace std;
void Func(int a=10, int b=20 , int c = 30)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
int main()
{
Func(1, 2, 3);
Func(1, 2);
Func(1, ,3);//报错
return 0;
}
- デフォルトのパラメータは関数の宣言と定義に同時に使用できず、デフォルト値は宣言で指定する必要があります。
#include<iostream>
using namespace std;
void Func(int a = 10);
int main()
{
Func();
return 0;
}
void Func(int a = 10)
{
cout << "a = " << a << endl;
}
- デフォルト値は定数またはグローバル変数である必要があります
- C言語はサポートしていません(コンパイラはサポートしていません)