C ++函数名称作为参数

时间:2014-12-20 05:23:41

标签: c++ parameters

这里几乎是绝对的初学者。这是Qt docs中的示例代码:

#include <QObject>

class Counter : public QObject
{
    Q_OBJECT

public:
    Counter() { m_value = 0; }

    int value() const { return m_value; }

public slots:
    void setValue(int value);

signals:
    void valueChanged(int newValue);

private:
    int m_value;
};

value()是一个功能? value的参数中的setValue(int value)是否在不使用括号的情况下调用函数value(),因此获取value()的返回值以传递给setValue()?

2 个答案:

答案 0 :(得分:2)

你问:

  

setValue(int value)调用函数value()而不使用括号的参数值也是如此,因此,将value()的返回值传递给setValue()

没有。函数value中的标识符setValue()会影响成员函数value。在setValue()内,你可以引用它们,但它们需要不同的语法。

void setValue(int value)
{
    m_value = value; // This is the argument.
    this->value()    // This calls the member function.
}

答案 1 :(得分:0)

没有。 setValue参数的名称只是int类型的普通局部变量。它与Counter::value()函数没有任何关系。

内部Counter::setValue函数参数value隐藏类成员函数value()。这意味着内部Counter::setValue非限定名称value将始终引用该参数。

您仍然可以使用限定名称Counter::value()或将其称为this->value()来解决隐藏问题并引用成员函数。