C++ 如何将结构变量初始化为默认值?
我现在正在学习结构,并尝试为该结构类型的每个变量创建默认值。我的测试代码如下:C++ 如何将结构变量初始化为默认值?,c++,struct,initialization,C++,Struct,Initialization,我现在正在学习结构,并尝试为该结构类型的每个变量创建默认值。我的测试代码如下: #include<iostream> using namespace std; int main (void){ // DECLARING THE STRUCTURE struct str_client{ char name[20] = "\0"; int age = 0; double money = 0.00
#include<iostream>
using namespace std;
int main (void){
// DECLARING THE STRUCTURE
struct str_client{
char name[20] = "\0";
int age = 0;
double money = 0.00;
};
// DECLARING A VARIABLE OF THAT STRUCTURE TYPE (IN THIS CASE, AN ARRAY).
str_client client[3];
return (0);}
#包括
使用名称空间std;
内部主(空){
//声明结构
str_结构客户端{
字符名[20]=“\0”;
int年龄=0;
双倍货币=0.00;
};
//声明该结构类型的变量(在本例中为数组)。
stru客户端[3];
返回(0);}
这种初始化方法正确吗?使用构造函数。
因为类和结构是相似的
struct str_client{
string name;
int age;
double money;
str_client()
{
name = "";
age = 0;
money = 0.0;
}
};
编辑
使用成员初始值设定项列表将提高性能
struct str_client{
string name;
int age;
double money;
str_client()
: name(""), age(0), money(0.0)
{
}
};
C++中的数组是从零开始索引的。@ NeilButterworth解决了一半的问题(为什么输出不正确)。我据此对问题进行了编辑。现在的问题在于初始化结构变量的正确方法。
“\0”
是无用的。写”
。编译器添加了自己的\0
。这是用默认值初始化结构的一个非常好的方法。这对您合适吗?我还没有学习这部分(类)!但最好事先知道另一种方法。谢谢,这是个糟糕的建议。仅初始化构造函数中的成员,前提是它们依赖于传递给构造函数的参数,或者它们的值是在构造时估计的。此外,仅在不可能的情况下才使用构造函数和构造函数体的初始化列表@用户10906383在创建对象时传递值也是个好主意。str_client={“\0”,0,0.0};这可以在没有构造函数的情况下实现。