【C/C++】构造函数初始化结构体

本文为 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;
}

猜你喜欢

转载自blog.csdn.net/weixin_44413191/article/details/107677368