C++ 结构体初始化的问题
#include<iostream>#include<string>usingnamespacestd;structinflatable{charname[10];flo...
#include<iostream>
#include<string>
using namespace std;
struct inflatable
{
char name[10];
float volume;
double price;
};
若有
inflatable a={};
1、则这条语句是吧 name中的十个元素全部初始化为 ‘\0' 吗?
2、若结构体定义为string a;
则该语句的初始化结果是什么? 展开
#include<string>
using namespace std;
struct inflatable
{
char name[10];
float volume;
double price;
};
若有
inflatable a={};
1、则这条语句是吧 name中的十个元素全部初始化为 ‘\0' 吗?
2、若结构体定义为string a;
则该语句的初始化结果是什么? 展开
展开全部
第一个问题,不能这样初始化,需要
inflatable a={0};集合中至少需要1个元素方可作为初始化列表,专业会将name、volume、price的所有字节全部初始化为0。
第二个问题,如果结构体包含有string a;那么就不能使用初始化列表初始化了。
也就是说
inflatable a={0}会编译不成功,因为string类有构造函数,具备有构造函数的成员的结构体不能用={0}的方式进行初始化。
inflatable a={0};集合中至少需要1个元素方可作为初始化列表,专业会将name、volume、price的所有字节全部初始化为0。
第二个问题,如果结构体包含有string a;那么就不能使用初始化列表初始化了。
也就是说
inflatable a={0}会编译不成功,因为string类有构造函数,具备有构造函数的成员的结构体不能用={0}的方式进行初始化。
追问
(name全部字节弄成0是什么意思?)
inflatable a={0};
是把
char name[10]
的每个元素全部初始化为 '\0'吗?
追答
或许这样你会清楚些:
inflatable a={1};
会把name[0]设置为1,name[1]~name[9]=0。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询