假设我有这样一个类:
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;
。我很困惑,是否会返回指向该成员的指针?如果是这样,它如何在所有者的实例上使用?
答案 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
类型的其他成员。在存在多个这样的成员的情况下,成员指针变得更有价值:您可以将对特定成员的绑定推迟到运行时。