这里几乎是绝对的初学者。这是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()?
答案 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()
来解决隐藏问题并引用成员函数。