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
查看评论