用构造函数来完成结构体的初始化

前言

说到结构体的初始化,人们会自然的想到先定义一个结构体变量,然后对其中的元素逐一赋值,以达到初始化的目的。

但是如果这样做,当结构体内变量很多时并不方便,此处介绍一种使用“构造函数”的方法来进行初始化,供读者学习。

所谓构造函数就是用来初始化结构体的一种函数,它直接定义在结构体中。
构造函数的一个特点是它不需要写返回类型,且函数名与结构体名相同。

例子:

struct student
{
    
    
	int id;
	char name;
	//默认生成的构造函数
	student(){
    
    }
};

“ student(){} ”就是默认生成的构造函数,可以看到这个构造函数的函数名和结构体类型名相同;它没有返回类型,所以student前面没有写东西;它没有参数,所以小括号内是空的;它也没有函数体,因此花括号内也是空的。由于这个构造函数的存在,才可以直接定义student类型的变量而不进行初始化(因为它没有让用户提供任何初始化参数)

那么,如果想要自己手动提供id和name的初始化参数,应该怎么做?

struct student
{
    
    
	int id;
	char name;
	//下面的参数用以对结构体内部变量进行赋值
	student(int _id,char _name)
	{
    
    
		id=_id;
		name=_name;
	}
};

当然构造函数也可以简写成一行

struct student
{
    
    
	int id;
	char name;
	//下面的参数用以对结构体内部变量进行赋值
	student(int _id,char _name) : id(_id),name(_nmae)	{
    
    }
};

在这里插入图片描述
注意:如果自己重新定义了构造函数,则不能不经初始化就定义构造函数变量。
也就是说默认生成的构造函数 " student(){} " 此时已经被覆盖了。为了既能不初始化就定义结构体变量,
又能享用初始化带来的便捷,可以把 " student(){} " 手动加上。这意味着,只要参数个数和类型不完全相同,
就可以定义任意多个构造函数,以适应不同的初始化场合。
例如:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/114580713