结构体里的成员初始化问题

声明一个结构体:

struct node
{
    int age;
    string name;
    double score;
};

这里没给默认值

那么直接输出会怎么样

node temp;
cout<

 结果

4199040  1.33485e-306
Process returned 0 (0x0)   execution time : 0.258 s
Press any key to continue.

除去中间两个空格可知,如果成员没有默认值直接输出的话,就跟声明普通变量直接输出一样,int,double都是乱的,string为空的,总之都是不合理的

 

 

而如果结构体作为map的value,不赋值会出现什么?

map m;
m[1];
cout<

这里直接声明创建一个"1"的键,没有显式赋值

 

结果

0  0
Process returned 0 (0x0)   execution time : 0.377 s
Press any key to continue.

除去中间两个空格可知,int,double都是默认值0,string是空字符串

 

结构体作为value,没有赋值,也没有在声明成员的时候给默认值,也会有值

 

其实并不是没有赋值

map里的元素都是对组只有成对的才能插进去,而m[1]不是只声明了一个key,系统隐式地给value赋了默认值,然后才会成为一个对组,从而存进去map里的

 

 

结论:

当需要直接使用一个结构体而可能没赋值,担心会产生危险,可以在声明成员的时候给默认值

而如果是直接存进map作为value的,可以不用手动赋初值,系统会来做

你可能感兴趣的:(结构体里的成员初始化问题)