members scope resolution rules:
对member functions的分析,会直到整个class的声明都出现后才开始。因此,X()返回的x,是class::x。对于member functions的argument list 在第一次遭遇就被决议(resolved)。因此,member functions的length就决议为int。当后续再有nested typedef出现时,把稍早的绑定标识为非法。所以,_val 为 float。
static data members
每个static data member只有一个实体,存放在data segment中。取其地址,为数据类型的指针,而不是class member指针。如 const int*。
nonstatic data member
直接存放在每个class object中,经由class object存取。origin._y的地址为&origin + (&origin::_y - 1).data member的指针其offset总被加上1,以区分没有指出任何member的情况。
class的subobject的data member也直接出现在object 内存中,其offset在编译时期即可获知