C ++对类数据成员的引用

时间:2016-06-01 16:37:10

标签: c++ reference member

我最近才发现存在指向类数据成员的指针,例如:

class Car
{
    public:
    int speed;
};

int main()
{
    int Car::*pSpeed = &Car::speed;
    return 0;
}

对类数据成员的引用是否也存在?如果是这样,声明它们的是sintax?

1 个答案:

答案 0 :(得分:3)

不,没有对类成员的引用,也没有“类成员”类型的值。你唯一能拥有的是指向非静态类成员的指针(指向数据成员或成员函数)。

std::is_member_pointer trait很好地总结了这一点:指向成员的指针是类型#include<iostream> #include<vector> using namespace std; int removeDuplicates(vector<int> &A) { int m = A.size(); if(m <= 1) return m; for (auto it1 = A.begin(); it1 != A.end(); it1++) { for (auto it2 = it1 + 1; it2 != A.end();) { if (*it1 == *it2) { it2 = A.erase(it2); } else { it2++; } } } return A.size(); } int main() { vector<int> vec = { 0, 0, 0, 0, 0, 0, 0, 4, 4, 7, 7, 7, 7, 9 }; cout << "ans=" << removeDuplicates(vec); return 0; } ,其中T U::*是类类型,U是对象或函数类型。 (与往常一样,没有指向引用的指针。)