追加の機能を拡張する必要がある既存のメソッド (または一般的な関数) がありますが、コード内の他の場所でメソッドの使用を中断したくありません。例:
int foo::bar(int x)
{
// a whole lot of code here
return 2 * x + 4;
}
コードベースで広く使用されています。ここで、4 をパラメーターにする必要がありますが、既に foo::bar を呼び出しているコードは、期待どおりに受け取る必要があります。古いメソッドを拡張して名前を変更し、次のように新しいメソッドにラップする必要があります
int foo::extended_bar(int x, int y)
{
// ...
return 2 * x + y;
}
int foo::bar(int x)
{
return extended_bar(x,4);
}
または、ヘッダーファイルでデフォルトの引数を宣言する必要があります
int bar(int x, int y=4);
機能を拡張するだけです
int foo::bar(int x, int y)
{
// ...
return 2 * x + y;
}
各バリアントの長所と短所は何ですか?