代码之家  ›  专栏  ›  技术社区  ›  nakiya

应该在哪里指定默认参数?

  •  1
  • nakiya  · 技术社区  · 14 年前

    在我的工作场所,通常在声明中指定默认参数。通常的自定义是什么?我应该在方法声明或方法定义中指定默认参数吗?

    编辑:有没有办法为引用指定默认参数?

    编辑:是否可以提供引用参数的默认参数示例?

    5 回复  |  直到 14 年前
        1
  •  2
  •   Cheers and hth. - Alf    14 年前

    伊班加罗比尔已经回答了关于哪里的问题。

    关于参考文献 const T型 您可以直接指定默认值。

    常量 您需要指定默认的“值”作为对非-

    #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();
    }
    

    干杯。,

    阿尔夫

        2
  •  7
  •   Yakov Galka    14 年前

        3
  •  1
  •   AnT stands with Russia    14 年前

    好吧,通常的做法是对所有翻译单元使用相同的默认参数集。为了实现这一点,显然必须在头文件中的函数声明中指定默认参数。

    extern int i;
    
    void foo(int &r = i);
    void bar(const double &r = 0);
    
        4
  •  0
  •   Manoj R    14 年前

    必须在方法声明处,以便调用方能够知道函数所期望的确切内容。

        5
  •  0
  •   ur.    14 年前

    我曾经使用默认值,但同时我改变了主意:当我明确地编写参数值时,我发现代码可读性更好。有时我会定义另一种方法,如下所示:

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

    bool Initialize( const char * pszOptPath = NULL );