在我的工作场所,通常在声明中指定默认参数。什么是正常的自定义?我应该在方法声明或方法定义中指定默认参数吗?
编辑:有没有办法为引用指定默认参数?
编辑:有人可以提供参考参数默认参数的示例吗?
答案 0 :(得分:7)
方法声明。调用者可能没有定义,但必须在调用位置知道默认参数。
答案 1 :(得分:2)
ybungalobill已经回答了关于在哪里的问题。
关于引用,对于const
T 的引用,您只需直接指定默认值即可。
对于非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();
}
干杯&amp;第h。,
- Alf
答案 2 :(得分:1)
通常的做法是为所有翻译单元设置相同的默认参数集。为了实现这一点,你显然必须在头文件中的函数声明中指定默认参数。
参考参数的默认参数...当然,可以。例如
extern int i;
void foo(int &r = i);
void bar(const double &r = 0);
答案 3 :(得分:0)
我曾经使用默认值,但同时我改变了主意:当我明确地写出参数值时,我发现代码更易读。有时我会定义另一种方法,如下所示:
bool Initialize( const char * pszPath );
bool InitializeDefault();
而不是
bool Initialize( const char * pszOptPath = NULL );
答案 4 :(得分:0)
必须在方法声明中,以便调用者可以知道函数的确切期望 你可以像Alf说的那样做但不确定为什么需要它。可能你想看看你的功能设计。