c++中struct成员的默认值

时间:2025-02-11 07:15:31

1

#include<iostream>
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 <<  << endl;//使用了未初始化的局部变量anode,在VS上会报错,在上面报警告
	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<iostream>
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 <<  << endl;//使用了未初始化的局部变量anode,在VS上会报错,在上面报警告
	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<iostream>
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 <<  << endl;//使用了未初始化的局部变量anode,在VS上会报错,在上面报警告
	for (int i = 0; i < maxn; i++)
	{
		cout << boolalpha << node[i].flag << endl;
	}
	return 0;
}

输出为:

true
true
true
true
true
true