c++ 结构体的构造函数
结构体中构造函数
1、不使用构造函数
1 #include<iostream> 2 3 struct student { 4 5 int age; 6 std::string gender; 7 8 }Liu; 9 10 int main() { 11 Liu.age = 20; 12 Liu.gender = "man"; 13 14 std::cout << Liu.age << '\n' << Liu.gender; 15 16 return 0; 17 18 }
通过上述代码对结构体变量单独赋值,也可以整体赋值:
1 Liu = { 20, "man" };
当变量过多的时候不方便,因此使用构造函数。
2、使用构造函数
1 #include<iostream> 2 #include<string> 3 4 struct student { 5 6 int age; 7 std::string gender; 8 9 // 单独赋值 10 student(int _age) : age(_age) {} 11 student(std::string _gender) : gender(_gender) {} 12 // 同时赋值 13 student(int _age, std::string _gender) : age(_age), gender(_gender) {} 14 15 16 }; 17 18 int main() { 19 student Liu(20, "man"); 20 std::cout << Liu.age << '\n' << Liu.gender; 21 return 0; 22 }
这样可以单独初始化某些变量或者全部变量。
3、默认构造函数和自定义构造函数
1 #include<iostream> 2 #include<string> 3 4 struct student { 5 6 int age; 7 std::string gender; 8 9 // 默认构造函数 10 student(){}; 11 12 // 单独赋值 13 student(int _age) : age(_age) {} 14 student(std::string _gender) : gender(_gender) {} 15 // 同时赋值 16 student(int _age, std::string _gender) : age(_age), gender(_gender) {} 17 18 19 }Liu; 20 21 int main() { 22 Liu = student(20, "man"); 23 std::cout << Liu.age << '\n' << Liu.gender; 24 return 0; 25 }
如果将默认构造函数和自定义构造函数同时使用,就可以不初始化而直接定义变量。