C++では、引数にデフォルトの値を設定できる・・・。
デフォルト引数が設定された関数は、引数を渡さずに呼ぶことができ、その時は内部がデフォルト値で処理される・・・。
void func(int i); void func2(int j = 20); void func(int i = 10){ printf("i = %d\n", i); } void func2(int j){ printf("j = %d\n", j); }
宣言、または定義のどちらかにデフォルトの値を設定するだけである・・・。(両方はダメ・・・。)
文字列バッファクラスの生成時にデフォルト引数を使ってみた・・・。
このような文字列バッファクラスを作成し、
createメンバ関数の定義でデフォルト引数を32とした・・・。
ちなみに、この文字列バッファクラスclass_string_bufferにおけるサイズの定義は、「格納できるNULL文字を含まない文字バイト数」なので、デフォルトが32ということは、ASCIIで32文字格納できるということ・・・。
実際のメモリサイズは32 + 1(NULL文字) = 33バイトである・・・。
main関数でcreateを呼ぶ時、引数を与えた時と与えない時の違いは、
引数を与えない時はデフォルトの32、与えた時は16で内部が処理される・・・。
文字列バッファサイズを出力してみると、
buffer.get_size() = 32 half.get_size() = 16
確かに違う・・・。
まあ、この後はあまり関係ないけど、このプログラムでは、これらの文字列バッファにsetしてから、再びgetして、出力している・・・。
実行すると、
$ ./default_argument buffer.get_size() = 32 half.get_size() = 16 buf = ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 half_buf = ABCDE $
となる・・・。