在我的工作场所,通常在声明中指定默认参数。正常的习惯是什么?我应该在方法声明或方法定义中指定默认参数吗?
编辑:有没有办法为引用指定默认参数?
编辑:有人可以提供参考参数的默认参数示例吗?
在我的工作场所,通常在声明中指定默认参数。正常的习惯是什么?我应该在方法声明或方法定义中指定默认参数吗?
编辑:有没有办法为引用指定默认参数?
编辑:有人可以提供参考参数的默认参数示例吗?
方法声明。调用者可能没有定义,但在调用处必须知道默认参数。
ybungalobill 已经回答了关于在哪里的问题。
关于引用,对于const
T的引用,您可以直接指定默认值。
对于 non- 的引用,const
您需要指定默认“值”作为对 non- 的引用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 );
必须在方法声明处,以便调用者可以知道函数的确切期望。
您可以像 Alf 所说的那样做技巧,但不确定为什么需要它。可能是你想看看你的功能设计。