c++中struct成员的默认值

1

#include
using namespace std;

const int maxn = 5;
struct NODE {
	//NODE():flag(false) {}
	char data;
	int next;
	bool flag;
}node[maxn];

int main()
{
	NODE anode;
	cout << boolalpha << anode.flag << endl;//使用了未初始化的局部变量anode,在VS上会报错,在cpp.sh上面报警告
	for (int i = 0; i < maxn; i++)
	{
		cout << boolalpha << node[i].flag << endl;
	}
	return 0;
}

输出为:

true
false
false
false
false
false

居然不一样。

2.在默认构造函数的初始化列表中设置flag为false

#include
using namespace std;

const int maxn = 5;
struct NODE {
	NODE():flag(false) {}
	char data;
	int next;
	bool flag;
}node[maxn];

int main()
{
	NODE anode;
	cout << boolalpha << anode.flag << endl;//使用了未初始化的局部变量anode,在VS上会报错,在cpp.sh上面报警告
	for (int i = 0; i < maxn; i++)
	{
		cout << boolalpha << node[i].flag << endl;
	}
	return 0;
}

输出为:

false
false
false
false
false
false

3.在默认构造函数的初始化列表中设置flag为true

#include
using namespace std;

const int maxn = 5;
struct NODE {
	NODE():flag(true) {}
	char data;
	int next;
	bool flag;
}node[maxn];

int main()
{
	NODE anode;
	cout << boolalpha << anode.flag << endl;//使用了未初始化的局部变量anode,在VS上会报错,在cpp.sh上面报警告
	for (int i = 0; i < maxn; i++)
	{
		cout << boolalpha << node[i].flag << endl;
	}
	return 0;
}

输出为:

true
true
true
true
true
true

你可能感兴趣的:(c++)