前言
在笔试中遇到成员初始化的问题,在这记录
问题1:2024.4.27
问题1
下面代码的运行结果:
#include <iostream>
using namespace std;
class Test{
private:
int n1;
int n2;
public:
Test():n2(3),n1(n2+2){};
void printn(){
cout<<"n1: "<<n1<<" n2: "<<n2<<endl;
}
};
int main(){
Test t;
t.printn();
return 0;
}
c++类成员变量初始化与构造函数的初始化列表顺序无关,而是和他在类中定义的顺序相关。如上述代码:在类中定义了n1,n2。而在初始化列表中以n2,n1顺序初始化。并不会得到n1 = 5,n2 = 3的结果。具体运行结果如下:
n1=2,n2 = 3
我本以为n1会是乱码,看来c++对类成员的int型会默认赋值为0。