小言_互联网的博客

结构体构造函数

355人阅读  评论(0)

1.构造函数

(1)只要参数和类型不完全相同,就可以定义任意多个构造函数,以适应不同的初始化场合。
(2)构造函数不需要写返回类型,且函数名与结构体名相同
(3)结构体内会生成一个默认的构造函数(但不可见,如studentInfo(){}),如下,所以才可以直接定义studentInfo类型的变量而不进行初始化(因为它没有让用户提供任何初始化参数)。
构造函数:

struct studentInfo{
   
	int id;
	char gender;
	//默认生成的构造函数
	studentInfo(int _id,char _gender){
   
		//赋值
		id=_id;
		gender=_gender;
	}
	//只初始化gender
	studentInfo(char _gender){
   
		gender=_gender;
	}
};

上面的int _id的id只是变量名(下面的版本也是,改成其它当然也行),另外构造函数也可以直接化简成一行:

struct studentInfo{
   
	int id;
	char gender;
	//默认生成的构造函数
	studentInfo(int _id,char _gender): id(_id),gender(_gender){
   }
};
//这样就可以在需要时直接对结构体变量进行赋值
studentInfostu=studentInfo(10086,'M');

2.小栗子

#include<stdio.h>
#include<iostream>
using namespace std;
struct Point{
   
	int x,y;
	Point(){
   }
	Point(int _x,int _y):x(_x),y(_y){
   }//用以提供x和y的初始化
}pt[10];
int main(){
   
	int num=0;
	for(int i=1;i<=3;i++){
   
		for(int j=1;j<=3;j++){
   
			pt[num++]=Point(i,j);
		}
	}
	for(int i=0;i<num;i++){
   
		printf("%d,%d\n",pt[i].x,pt[i].y);
	}
	system("pause");
}


转载:https://blog.csdn.net/qq_35812205/article/details/112801861
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场