将类成员传递给方法参数

问题描述 投票:0回答:1

如何访问函数参数中的类成员

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
        }
c++ function class member-functions
1个回答
0
投票

我看到了您的函数的几个用例:

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

如果您发现不使用参数的情况特别频繁,那么请为其编写一个方便的方法,但我仍然认为上面的示例已经足够干净了。

© www.soinside.com 2019 - 2024. All rights reserved.