C++ 拷贝构造函数

#include <iostream>
 
using namespace std;
 
class Line
{
   
   public:
      int getLength( void );
      Line( int len );             // 简单的构造函数
      Line( const Line &obj);      // 拷贝构造函数
      ~Line();                     // 析构函数
 
   private:
      int *ptr;
};
 
// 成员函数定义,包括构造函数
Line::Line(int len)
{
   
    cout << "调用构造函数" << endl;
    // 为指针分配内存
    ptr = new int;
    *ptr = len;
}
 
Line::Line(const Line &obj)
{
   
    cout << "调用拷贝构造函数并为指针 ptr 分配内存" << endl;
    ptr = new int;
    *ptr = *obj.ptr; // 拷贝值
}
 
Line::~Line(void)
{
   
    cout << "释放内存" << endl;
    delete ptr;
}
int Line::getLength( void )
{
   
    return *ptr;
}
 
void display(Line obj)
{
   
   cout << "line 大小 : " << obj.getLength() <<endl;
}
 
// 程序的主函数
int main( )
{
   
   Line line(10);
 
   display(line);
 
   return 0;
}

输出结果:

调用构造函数
调用拷贝构造函数并为指针 ptr 分配内存
line 大小 : 10
释放内存
释放内存

#include <iostream>
 
using namespace std;
 
class Line
{
   
   public:
      int getLength( void );
      Line( int len );             // 简单的构造函数
      Line( const Line &obj);      // 拷贝构造函数
      ~Line();                     // 析构函数
 
   private:
      int *ptr;
};
 
// 成员函数定义,包括构造函数
Line::Line(int len)
{
   
    cout << "调用构造函数" << endl;
    // 为指针分配内存
    ptr = new int;
    *ptr = len;
}
 
Line::Line(const Line &obj)
{
   
    cout << "调用拷贝构造函数并为指针 ptr 分配内存" << endl;
    ptr = new int;
    *ptr = *obj.ptr; // 拷贝值
}
 
Line::~Line(void)
{
   
    cout << "释放内存" << endl;
    delete ptr;
}
int Line::getLength( void )
{
   
    return *ptr;
}
 
void display(Line obj)
{
   
   cout << "line 大小 : " << obj.getLength() <<endl;
}
 
// 程序的主函数
int main( )
{
   
   Line line1(10);
 
   Line line2 = line1; // 这里也调用了拷贝构造函数
 
   display(line1);
   display(line2);
 
   return 0;
}

输出结果:

调用构造函数
调用拷贝构造函数并为指针 ptr 分配内存
调用拷贝构造函数并为指针 ptr 分配内存
line 大小 : 10
释放内存
调用拷贝构造函数并为指针 ptr 分配内存
line 大小 : 10
释放内存
释放内存
释放内存

相关推荐

  1. C++ 拷贝构造函数

    2024-01-03 10:48:05       40 阅读
  2. C++ 拷贝构造函数

    2024-01-03 10:48:05       34 阅读
  3. C++拷贝构造函数介绍

    2024-01-03 10:48:05       34 阅读
  4. [C++] 拷贝构造函数 && 深拷贝、浅拷贝

    2024-01-03 10:48:05       15 阅读
  5. C++入门【37-C++ 拷贝构造函数

    2024-01-03 10:48:05       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-03 10:48:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-03 10:48:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-03 10:48:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-03 10:48:05       18 阅读

热门阅读

  1. User mkcert 生成本地证书的步骤

    2024-01-03 10:48:05       40 阅读
  2. k8s安装hostPath方式存储的PostgreSQL15

    2024-01-03 10:48:05       39 阅读
  3. 2023.12.30力扣每日一题——一周中的第几天

    2024-01-03 10:48:05       43 阅读
  4. 牙科废水处理设备详细介绍

    2024-01-03 10:48:05       38 阅读
  5. C++汇编语言学习计划

    2024-01-03 10:48:05       39 阅读
  6. PDF最强处理工具-StirlingPDF

    2024-01-03 10:48:05       40 阅读
  7. Laya3d碰撞后退表现算法

    2024-01-03 10:48:05       42 阅读
  8. 5分钟带你解决Promise疑难杂症

    2024-01-03 10:48:05       34 阅读
  9. pytorch 转 onnx

    2024-01-03 10:48:05       32 阅读