📅  最后修改于: 2023-12-03 15:14:03.175000             🧑  作者: Mango
在C++中,struct
是一种自定义数据类型,用于组织不同类型的数据成员。与类(class)相比,struct
的默认访问权限是公共的(public),而类的默认访问权限是私有的(private)。struct
也可以具有成员函数和构造函数。
构造函数是在创建一个对象时自动调用的特殊成员函数。在C++中,构造函数与类名相同,不返回任何值,也不需要使用void
关键字来标识。构造函数用于初始化类的对象的数据成员。
在struct
中的构造函数可以具有以下特点:
默认构造函数是不带任何参数的构造函数,如果在struct
中没有显式定义构造函数,编译器会生成一个默认构造函数。默认构造函数执行的操作是将数据成员初始化为默认值,例如int
类型的数据成员被初始化为0,指针类型的数据成员被初始化为nullptr。
以下是一个struct
中的默认构造函数的示例代码:
struct Person {
std::string name;
int age;
double height;
// 默认构造函数
Person() {
name = "";
age = 0;
height = 0.0;
}
};
带参数的构造函数是根据传入的参数进行初始化的构造函数。它允许在创建对象时直接传递初始值,从而避免使用默认构造函数后再通过成员函数逐个赋值的操作,提高了代码的简洁性和可读性。
以下是一个struct
中的带参数构造函数的示例代码:
struct Person {
std::string name;
int age;
double height;
// 带参数的构造函数
Person(const std::string& n, int a, double h) {
name = n;
age = a;
height = h;
}
};
使用构造函数创建对象的方式有两种:
Person john("John Doe", 25, 180.5);
Person jane = john; // 利用拷贝构造函数
#include <iostream>
struct Person {
std::string name;
int age;
// 默认构造函数
Person() {
name = "";
age = 0;
}
// 带参数的构造函数
Person(const std::string& n, int a) {
name = n;
age = a;
}
// 析构函数
~Person() {
std::cout << "Destructor called for " << name << std::endl;
}
};
int main() {
// 默认构造函数创建对象
Person john;
std::cout << "Name: " << john.name << ", Age: " << john.age << std::endl;
// 带参数的构造函数创建对象
Person jane("Jane Smith", 30);
std::cout << "Name: " << jane.name << ", Age: " << jane.age << std::endl;
return 0;
}
以上示例代码演示了使用默认构造函数和带参数构造函数创建Person
对象,并输出对象的成员变量值。
需要注意的是,如果在struct
中定义了构造函数,一般也应该定义一个析构函数来进行资源的释放操作。在示例代码中,析构函数用于在对象销毁时输出一条信息。
以上就是关于C++中struct
构造函数的介绍。通过构造函数,我们可以更方便地对struct
对象进行初始化,提高代码的可读性和简洁性。