如何访问函数参数中的类成员
class Array
{
private:
int size;
public:
void fill(int start = 0, int end = **size**)
{
// Function Body
}
};
我尝试使用它
public:
void fill(int start = 0, int end = NULL)
{
if (end == NULL)
end = size;
// Function Body
}
我看到了您的函数的几个用例:
Array a;
int start = ...;
int end = ...;
//first case
a.fill(start, end);
//second case
a.fill(start);
//third case;
a.fill();
在这种情况下,我会定义三种方法:一种用于完成实际工作,另两种作为便捷方法:
class Array
{
private:
int size;
public:
//main method
void fill(int start, int end)
{
// Function Body
}
//convenience methods
void fill(int start)
{
fill(start, size);
}
void fill()
{
fill(0, size);
}
};
对于 C++ 来说,不建议这样做,因为这样你的类就会因便捷方法而变得臃肿。想象一下,如果每个方法调用有更多可选参数,则必须为每个可选参数编写一个便捷方法。
更好的解决方案是简单地删除参数的默认值并每次使用显式值。从长远来看,您的代码不会变得更大,并且您可以保持此方法的清晰度。
class Array
{
private:
int size;
public:
int getSize()
{
return size;
}
void fill(int start, int end)
{
// Function Body
}
};
使用代码时,您只需编写一些额外的参数:
int main()
{
Array a;
a.fill(0, a.getSize());
//with default values it would be
//a.fill();
}
如果您发现不使用参数的情况特别频繁,那么请为其编写一个方便的方法,但我仍然认为上面的示例已经足够干净了。