我所知道的:
来自帖子: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;
}