写一段代码说明拷贝构造函数
时间: 2023-07-10 15:31:30 浏览: 91
详解C++ 拷贝构造函数
5星 · 资源好评率100%
好的,下面是一段示例代码,其中包含了一个类`Person`和其拷贝构造函数的实现:
```c++
#include <iostream>
#include <cstring>
class Person {
public:
Person(const char* name, int age) {
m_name = new char[strlen(name) + 1];
strcpy(m_name, name);
m_age = age;
}
// 拷贝构造函数的实现
Person(const Person& other) {
m_name = new char[strlen(other.m_name) + 1];
strcpy(m_name, other.m_name);
m_age = other.m_age;
}
~Person() {
delete[] m_name;
}
private:
char* m_name;
int m_age;
};
int main() {
Person p1("Tom", 20);
Person p2 = p1; // 调用拷贝构造函数创建 p2
return 0;
}
```
在上面的代码中,我们定义了一个`Person`类,该类包含一个字符串类型的成员变量`m_name`和一个整型的成员变量`m_age`。拷贝构造函数的实现中,我们使用了深拷贝方式,即在堆内存中重新分配了一块空间用来存储`m_name`的副本,并将`m_age`直接复制过来。最后,在`main`函数中,我们通过将`p1`传递给`p2`来调用拷贝构造函数,创建了一个新的对象`p2`,该对象是`p1`的副本。
阅读全文