C++ 这个语句返回什么?

C++ 这个语句返回什么?,c++,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

假设我有一个这样的类:

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类型的其他成员。在存在多个这样的成员的情况下,成员指针变得更有价值:您可以将对特定成员的绑定推迟到运行时。

它确实返回一个值。您可以使用它间接访问m_Id,如下所示:

long Owner::* ptrMem = &Owner::m_Id;
Owner owner;
owner.*ptrMem = 10;
cout << owner.m_Id << endl;
此代码在可以访问m_Id的上下文中工作,例如在成员函数中


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

您能否提供一些使用&Owner::m_Id的上下文?您在什么上下文中见过这种情况?可能重复的@MikeDeSimone m_Id不是一个函数,所以这不是重复。你能提供一些使用&Owner::m_Id的上下文吗?你在什么上下文中见过这样的事情?可能重复的@MikeDeSimone m_Id不是一个函数,所以这不是重复的。非常感谢,这正是我想听到的。我不明白为什么会有这么多的反对票:@Davita不明白为什么会有这么多的反对票,我也不明白-我认为这是一个有效的问题,所以我把它投了上去。非常感谢,这正是我想听到的。我不明白为什么会有这么多人投反对票:@Davita不明白为什么会有这么多人投反对票,我也不明白——我认为这是一个合理的问题,所以我投了赞成票。