#include <iostream> class A{ private: int n1; int n2; public: A(): n2(0), n1(n2 + 2){ } void print(){ std::cout << "n1: " << n1 << ", n2: " << n2 << std::endl; } }; int main(int argc, char *argv[]){ A a; a.print(); return 0; }
输出n1是一个随机的数字,n2为0。在C++中,成员变量的初始化顺序与变量在类型中的申明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是一个随机值,因此n1就是一个随机值。初始化n2时,根据参数0对其初始化,故n2=0。