提示信息

C++拷贝构造函数(复制构造函数)

红军 已关注

C++拷贝构造函数(也叫复制构造函数)是一种特殊的构造函数,用于创建一个对象,该对象是通过复制另一个同类型对象的数据来创建的。拷贝构造函数通常在以下情况下被调用:

  1. 当用一个已经存在的对象去初始化一个新的对象时。
  2. 当对象作为函数的参数按值传递时。
  3. 当对象作为函数的返回值返回时。

拷贝构造函数的语法如下:

  1. ClassName(const ClassName& obj)
  2. {
  3. // 对象成员的复制操作
  4. }

其中,ClassName 表示类名,obj 是要复制的对象。

以下是一个示例,演示了拷贝构造函数的使用:

  1. #include <iostream>
  2. using namespace std;
  3. class Point {
  4. public:
  5. int x, y;
  6. Point(int x = 0, int y = 0) {
  7. this->x = x;
  8. this->y = y;
  9. }
  10. // 拷贝构造函数
  11. Point(const Point& p) {
  12. x = p.x;
  13. y = p.y;
  14. }
  15. };
  16. int main() {
  17. Point p1(1, 2); // 构造函数
  18. Point p2 = p1; // 拷贝构造函数
  19. cout << "p1.x = " << p1.x << ", p1.y = " << p1.y << endl;
  20. cout << "p2.x = " << p2.x << ", p2.y = " << p2.y << endl;
  21. return 0;
  22. }

运行结果:

  1. p1.x = 1, p1.y = 2
  2. p2.x = 1, p2.y = 2

在上面的示例中,我们定义了一个 Point 类,它包含两个整型成员变量 xy。拷贝构造函数 Point(const Point& p) 用于复制另一个 Point 对象 p 的数据来创建新对象。在 main 函数中,我们先创建一个 Point 对象 p1 并进行初始化,然后通过拷贝构造函数将其复制给 p2。最后,我们打印出 p1p2 的成员变量的值,可以看到它们是相同的。

需要注意的是,如果我们没有显式地定义拷贝构造函数,编译器会自动生成一个默认的拷贝构造函数,它会将一个对象的所有成员变量值复制给另一个对象。但是,如果类中存在指针成员变量,则需要我们自己实现拷贝构造函数来进行深拷贝,以避免浅拷贝带来的问题。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
红军 关注 已关注

最近一次登录:2023-12-11 11:20:41   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图