为什么在初始化数据成员之前可以使用数据成员初始化引用成员?

时间:2018-07-19 15:14:00

标签: c++

我所知道的:

来自帖子:C++: Initialization Order of Class Data Members

  

非静态数据成员应按照在类定义中声明的顺序进行初始化

来自 C ++ Primer

  

类定义分为两个阶段处理:
  •首先,编译成员声明。
  •仅在看到整个类之后才编译功能主体。


为什么在初始化c之前可以初始化b

顺便说一句,数据成员属于类声明还是定义?我认为它们是定义,但是上面引用的文字似乎表明它们仅是声明。

示例代码,编译良好:

#include <iostream>
using namespace std;

struct Bar {
void funcA() const {
    c++;
}
int &c = b;
int b = 3;
};

int main()
{
    Bar b;
    b.funcA();
    cout << b.b << endl; 
}

0 个答案:

没有答案