结构体初始化的几种方式
无构造方法的结构体初始化
创建一个结构体
struct STUDENT {
string name;
int age;
string sex;
}
定义时赋值
// 定义时赋值,通过大括号
// 没有构造方法的结构体是不能使用小括号的方式进行赋值的
struct STUDENT stu1 = {"tako", 22, "女"};
定义时乱序赋值(.attribute = value)
// 使用 .= 进行赋值
struct STUDENT stu3 = {
.name = "tako",
.age = 22,
.sex = "女"
};
定义时乱序赋值(attribute : value)
// 使用 : 进行赋值
struct STUDENT stu4 = {
name : "tako",
age : 22,
sex : "女"
};
先创建再赋值
int main() {
struct STUDENT student;
student.name = "tako";
student.age = 22;
student.sex = "女";
}
有构造方法的结构体初始化
有构造方法的结构体不能使用乱序赋值,也就是不能针对指定的属性名进行赋值。
创建一个结构体
struct TEACHER {
string name;
int age;
string sex;
// 无参构造方法
TEACHER() { };
// 有参构造方法
TEACHER(string name, int age, string sex) : name(name), age(age), sex(sex) { };
};
定义时赋值(跟无构造方法的结构体不同)
与无构造方法的结构体相比,有构造方法的结构体在定义时赋值的方式可以有更多种,不仅可以通过 (attr1, attr2) 也可以通过 {attr1, attr2} 的方式进行赋值。
// 创建老师结构体对象,这个结构体是有构造方法的
struct TEACHER teacher4("tako", 22, "男");
struct TEACHER teacher3 = TEACHER("tako", 22, "男");
struct TEACHER teacher2 = {"tako", 22, "男"};
struct TEACHER *teacher1 = new TEACHER("tako", 22, "男");
先定义再赋值(需要有无参构造方法)
struct TEACHER teacher;
teacher.name = "tako";
teacher.age = 22;
teacher.sex = "男";