c++ 自定义结构体中 如何编写构造函数、拷贝构造函数和析构函数
时间: 2024-03-12 15:50:19 浏览: 283
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
5星 · 资源好评率100%
在C++中,我们可以通过编写构造函数、拷贝构造函数和析构函数来管理自定义结构体对象的创建、复制和销毁。下面是一些示例代码,展示了如何编写这些函数:
```c++
// 定义一个自定义结构体
struct Person {
std::string name;
int age;
std::string address;
// 构造函数
Person(std::string n, int a, std::string ad) : name(n), age(a), address(ad) {}
// 拷贝构造函数
Person(const Person& p) : name(p.name), age(p.age), address(p.address) {}
// 析构函数
~Person() {}
};
```
在上面的代码中,我们定义了一个名为Person的结构体,其中包含三个成员变量:name、age和address。接下来我们分别介绍如何编写构造函数、拷贝构造函数和析构函数:
1. 构造函数
构造函数用于创建对象时初始化成员变量。在上面的代码中,我们定义了一个构造函数,它接受三个参数:n、a和ad,分别代表name、age和address的初始值。构造函数使用冒号语法来初始化成员变量,这样可以提高代码的效率。例如,语句name(n)将参数n的值赋给name成员变量。
2. 拷贝构造函数
拷贝构造函数用于在创建新对象时,将已有对象的值复制到新对象中。在上面的代码中,我们定义了一个拷贝构造函数,它接受一个常量引用p,表示要复制的对象。拷贝构造函数使用冒号语法来初始化成员变量,这样可以确保新对象的值与原对象相同。
3. 析构函数
析构函数用于销毁对象时清理资源,例如释放动态分配的内存。在上面的代码中,我们定义了一个析构函数,它没有任何参数,也没有任何操作。这是因为Person结构体中没有动态分配的内存,所以析构函数不需要做任何事情。
阅读全文