这句话的回报是什么?

时间:2012-03-28 12:35:55

标签: c++

假设我有这样一个类:

class Owner
{
private:
    long m_Id;
    QString m_Name;

public:
    Owner() : m_Id(0) { ; }
    virtual ~Owner() { ; }

    inline long id() const { return m_Id; }
    inline void setId(long id) { m_Id = id; }

    inline const QString & name() const { return m_Name; }
    inline void setName(const QString & name) { m_Name = name; }
}

我看到了代码&Owner::m_Id;。我很困惑,是否会返回指向该成员的指针?如果是这样,它如何在所有者的实例上使用?

1 个答案:

答案 0 :(得分:4)

确实会返回member pointer。您可以使用它来间接访问m_Id ,如下所示:

long Owner::* ptrMem = &Owner::m_Id;
Owner owner;
owner.*ptrMem = 10;
cout << owner.m_Id << endl;

此代码适用于可以访问m_Id的上下文,例如在成员函数中。

此示例不太有趣,因为您的类没有long类型的其他成员。在存在多个这样的成员的情况下,成员指针变得更有价值:您可以将对特定成员的绑定推迟到运行时。