私の職場では、通常、デフォルトのパラメータが宣言で指定されています. 通常のカスタムとは何ですか? メソッド宣言またはメソッド定義でデフォルト パラメータを指定する必要がありますか?
編集:参照のデフォルト パラメータを指定する方法はありますか?
編集:誰かが参照パラメーターのデフォルト引数の例を提供できますか?
私の職場では、通常、デフォルトのパラメータが宣言で指定されています. 通常のカスタムとは何ですか? メソッド宣言またはメソッド定義でデフォルト パラメータを指定する必要がありますか?
編集:参照のデフォルト パラメータを指定する方法はありますか?
編集:誰かが参照パラメーターのデフォルト引数の例を提供できますか?
メソッド宣言。呼び出し元はおそらく定義を持っていませんが、既定のパラメーターは呼び出し場所で認識されている必要があります。
ybungalobill は、場所に関する質問にすでに回答しています。
参照に関しては、const
Tへの参照の場合、デフォルト値を直接指定できます。
non- への参照については、 non-const
への参照としてデフォルトの「値」を指定する必要がありますconst
。これは、グローバル、または適切な変換を持つクラスのインスタンスである可能性があります。例えば、
#include <iostream>
struct DummyInt
{
int dummy;
operator int& () { return dummy; }
DummyInt(): dummy( 0 ) {}
};
void foo( int& v = DummyInt() ) {} // Whatever
int main()
{
int x = 42;
foo( x );
foo();
}
乾杯 & hth.,
– アルフ
通常の慣例では、すべての翻訳単位に対して同じ既定の引数のセットを使用します。これを実現するには、ヘッダー ファイルの関数の宣言で既定の引数を指定する必要があります。
参照パラメータのデフォルト引数は・・・もちろん可能です。例えば
extern int i;
void foo(int &r = i);
void bar(const double &r = 0);
呼び出し元が関数によって正確に何が期待されているかを知ることができるように、メソッド宣言にある必要があります。
アルフが言うようにトリックを行うことはできますが、なぜそれが必要なのかわかりません. 関数の設計を見てみたいと思うかもしれません。
以前はデフォルト値を使用していましたが、気が変わったのです。パラメーター値を明示的に記述すると、コードが読みやすくなることがわかりました。時々、次のような別のメソッドを定義します。
bool Initialize( const char * pszPath );
bool InitializeDefault();
それ以外の
bool Initialize( const char * pszOptPath = NULL );