本文为 C/C++ 学习总结。欢迎交流
通常我们初始化结构体使用 stu.id = 1;
,或在读入时进行赋值 scanf("%d", &stu.id);
。当结构体内变量很多时很不方便。我们可以使用构造函数来解决这个问题。
普通定义的结构体会生成默认构造函数 studentInfo(){}
,使得我们可以只定义结构体变量而不用赋值。如果想要自己提供初始化参数,下面介绍两种做法:
// 1.构造函数内赋值
struct studentInfo{
int id;
char gender;
// 参数对结构体内部变量赋值
studentInfo(int _id, char _gender){
// 赋值
id = _id;
gender = _gender;
}
}
// 2.使用初始化列表
struct studentInfo{
int id;
char gender;
// 参数对结构体内部变量赋值
studentInfo(int _id, char _gender): id(_id), gender(_gender){}
}
如果自己定义了构造函数,就不能使用原来的默认构造函数了,但可以手动加上 studentInfo(){}
。
下面的 demo 中,结构体 Point 用于存放平面点的坐标 x,y:
#include <iostream>
using namespace std;
struct Point {
int x, y;
Point() {} // 不经初始化定义pt[10]
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)
cout << pt[i].x << ',' << pt[i].y << endl;
return 0;
}