如果我没记错的话,这种声明可用于在构造函数中分配默认值:
/* .h */
class FooClass(){
private:
int* data;
int depth, rows, columns;
char* desc;
public:
...
}
/* .cpp */
FooClass::FooClass()
: data(NULL), depth(0), rows(0), columns(0), desc(NULL)
{
//whatever constructor does...
}
但不允许为函数中的参数分配默认值:
不好
/* .h */
class FooClass(){
public:
void foofunc(int var1, int var2, int var3, int var4);
}
/* .cpp */
FooClass::foofunc(int var1, int var2)
: var3(0), var4(5)
{
//whatever function does...
}
而必须这样做:
好的
/* .h */
class FooClass(){
public:
void foofunc(int var1, int var2, int var3 = 0, int var4 = 5);
}
/* .cpp */
FooClass::foofunc(int var1, int var2, int var3, int var4)
{
//whatever function does...
}
为什么?