结构体初始化的几种方式

结构体初始化的几种方式

无构造方法的结构体初始化

创建一个结构体
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 = "男";

发布了80 篇原创文章 · 获赞 13 · 访问量 9243

猜你喜欢

转载自blog.csdn.net/qq_39424178/article/details/103341435