这个语句返回什么

What does this statement return?

本文关键字:什么 返回 语句      更新时间:2023-10-16

假设我有一个这样的类:

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;。我很困惑,它会返回指向该成员的指针吗?如果是,如何在所有者的实例中使用它?

它确实返回了成员指针。您可以使用它来间接访问m_Id,如下所示:

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

此代码在m_Id可访问的上下文中工作,例如在成员函数中。

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