拷贝构造函数作用是啥,如何使用?举个例子
时间: 2024-03-27 22:40:09 浏览: 29
拷贝构造函数(copy constructor)是一种特殊的构造函数,它用于创建一个新对象,该对象是已有对象的副本。拷贝构造函数通常会被隐式地调用,例如当一个对象被传递给函数或从函数中返回时,或者当一个对象被初始化为另一个对象时。
拷贝构造函数的声明形式为:
```C++
class MyClass {
public:
MyClass(const MyClass& other);
};
```
其中,`MyClass` 是类名,`other` 是要被拷贝的对象的引用。
下面是一个使用拷贝构造函数的例子:
```C++
#include <iostream>
class Point {
public:
Point(int x = 0, int y = 0) : x(x), y(y) {}
Point(const Point& other) : x(other.x), y(other.y) {}
void print() const { std::cout << "(" << x << ", " << y << ")" << std::endl; }
private:
int x, y;
};
int main() {
Point p1(1, 2);
Point p2(p1); // 使用拷贝构造函数创建副本
p1.print(); // 输出 (1, 2)
p2.print(); // 输出 (1, 2)
return 0;
}
```
在上面的例子中,我们定义了一个名为 `Point` 的类,它有两个数据成员 `x` 和 `y`,以及一个拷贝构造函数。在 `main` 函数中,我们创建了一个 `Point` 对象 `p1`,然后使用拷贝构造函数创建了一个副本 `p2`。最后,我们分别输出了 `p1` 和 `p2` 的坐标。注意,由于我们实现了拷贝构造函数,因此 `p2` 中的数据成员与 `p1` 中的数据成员是相等的。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)