为什么我可以在成员函数中使用尚未声明的成员变量?

ozm*_*zma 7 c++ struct class

例如:

struct X{
X():a{10} {}
void foo() { a = 10; }

private:
int a;
};
Run Code Online (Sandbox Code Playgroud)

为什么在变量a尚未声明时编译?

Som*_*ude 9

编译器基本上对类或结构定义进行两次传递.一个用于解析和处理成员声明的结构/类,然后是内联函数的一个传递.