1

我对 C++ 中类成员的静态引用有疑问。很容易创建一个静态 const 成员,它是同一类的非静态成员的指针;像这样:

class A {
public:
    int x;
private:
    static int A::* const ptr_on_x;
};

int A::* const ptr_on_x = &A::x;

现在,我不知道为什么我不能写这样的东西,即创建一个静态 const 成员,它是对同一类的非静态成员的引用:

//won't compile
class B {
public:
    int x;
private:
    static int B::& const ptr_on_x;
};

int B::& const ptr_on_x = B::x;

从 SO 中关于指针和引用之间差异的各种帖子中,我没有找到任何线索。相反,我什至读到“引用是一种别名”。那么我误解了什么?

那么是否可以在同一个类中定义一些变量别名?我承认,对于一个简单的类,它似乎不是很有用;这是关于语言本身的问题。

另外我不太了解 C++0x,那么 C++0x 是否为此提供了解决方案?

编辑 MarcinŁoś 的评论给了我另一个想法。您可以获取函数引用,那么我可以创建一个作为类方法引用的类成员吗?

4

2 回答 2

3

仅仅是因为没有像成员引用这样的类型,只有指向成员的指针。

从 SO 中关于指针和引用之间差异的各种帖子中,我没有找到任何线索。

指向成员的指针与指针几乎没有关系,除了它的(有点误导性的)名称之外,事实上,就像指针一样,它指的是别的东西。从来没有一个令人信服的理由来添加一个看起来更像引用的类似类型。

那么是否可以在同一个类中定义一些变量别名?

不,没有明智的方法可以做到这一点。

另外我不太了解 C++0x,那么 C++0x 是否为此提供了解决方案?

不。

于 2013-09-05T12:38:47.573 回答
1

我认为主要的混淆是指针只是一个偏移指针(它知道成员相对于结构的位置),而不是绝对指针,而引用总是绝对的,因此你不能这样做。

于 2013-09-05T12:42:28.650 回答