Cpp 引数規定値

提供:yonewiki

C++に戻る


本来の表記は「C++(Cpp) 引数規定値」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。

※このページではC++にのみ存在する機能として、記事タイトルがC++ 引数規定値になっています。

引数規定値

関数やクラスの引数は、呼び出し時に引数が不足するとエラーになりますが、引数が指定されていない場合の初期値を関数やクラス側で設定しておくことができます。初期値があたえられている関数やクラスであれば、その分だけ引数を省略することができます。複数の引数がある場合、複数の引数に初期値を与えることが出来て、一部の引数だけは初期値を与えずに呼び出し側で、引数を必須とすることが出来ます。但し、引数に規定値がないものとあるものを混同させ、引数が省略できる場合でも、省略できる引数は引数の順番の後ろにまとめる必要があります。これは、引数順序の途中に省略できる引数が指定されても、どの引数が省略されたか判別できないことからも後尾でないと引数の対応がとれないことからも容易に想像できると思います。規定値のことを英語でDefaultと言う事から、デフォルト引数とも呼びます。


例1 引数省略関数

void Function(int nRate = 100){
  
}
int _tmain(int argc, _TCHAR* argv[]){
  Function();//省略すると引数規定値で設定されている値が使われる
  Function(99);
}


例2 引数省略関数 宣言部での規定値設定

void Function(int nRate = 100);
void Function(int nRate){
  
}
int _tmain(argv[]){
  Function();//省略すると引数規定値で設定されている値が使われる
  Function(99);
}


例3 引数省略関数 宣言部での規定値設定 ファイルが分かれているパターン

Function.h

void Function(int nRate = 100);

Function.cpp

#include "Function.h"
void Function(int nRate){
  
}

DefaultParamSample.cpp

#include "Function.h"
int _tmain(int argc, _TCHAR* argv[]){
  Function();//省略すると引数規定値で設定されている値が使われる
  Function(99);
}

宣言部でも定義部でもどちらでも引数規定値(デフォルト引数)が利用できますが、どちらかひとつでしか引数の設定はできません。たとえ同じ値を書いていたとしてもコンパイルエラーになります。


例4 引数省略クラス 宣言部での規定値設定 ファイルが分かれているパターン

DefaultParam.h

class CDefaultParam{
  CDefaultParam(int nRate=100);
};

DefaultParam.cpp

#include "DefaultParam.h"
CDefaultParam::CDefaultParam(int nRate){
  
}

DefaultParamSample.cpp

#include "DefaultParam.h"
int _tmain(int argc, _TCHAR* argv[]){
  CDefaultParam cdefaultparamInst();//省略すると引数規定値で設定されている値がコンストラクタで使われる
  CDefaultParam cdefaultparamInst(99);
}


C++に戻る