1

私の職場では、通常、デフォルトのパラメータが宣言で指定されています. 通常のカスタムとは何ですか? メソッド宣言またはメソッド定義でデフォルト パラメータを指定する必要がありますか?

編集:参照のデフォルト パラメータを指定する方法はありますか?

編集:誰かが参照パラメーターのデフォルト引数の例を提供できますか?

4

5 に答える 5

7

メソッド宣言。呼び出し元はおそらく定義を持っていませんが、既定のパラメーターは呼び出し場所で認識されている必要があります。

于 2010-10-12T06:28:18.533 に答える
2

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.,

– アルフ

于 2010-10-12T07:07:01.837 に答える
1

通常の慣例では、すべての翻訳単位に対して同じ既定の引数のセットを使用します。これを実現するには、ヘッダー ファイルの関数の宣言で既定の引数を指定する必要があります。

参照パラメータのデフォルト引数は・・・もちろん可能です。例えば

extern int i;

void foo(int &r = i);
void bar(const double &r = 0);
于 2010-10-12T07:22:32.063 に答える
0

呼び出し元が関数によって正確に何が期待されているかを知ることができるように、メソッド宣言にある必要があります。
アルフが言うようにトリックを行うことはできますが、なぜそれが必要なのかわかりません. 関数の設計を見てみたいと思うかもしれません。

于 2010-10-12T07:21:01.817 に答える
0

以前はデフォルト値を使用していましたが、気が変わったのです。パラメーター値を明示的に記述すると、コードが読みやすくなることがわかりました。時々、次のような別のメソッドを定義します。

bool Initialize( const char * pszPath );
bool InitializeDefault();

それ以外の

bool Initialize( const char * pszOptPath = NULL );
于 2010-10-12T06:36:31.677 に答える