复制构造函数:

复制构造函数是一种特殊的构造函数,其形参为本类的对象引用,作用是用一个已存在的对象去初始化同类型的新对象

如果没有为类声明拷贝初始化构造函数,则编译器自己生成一个隐含的复制构造函数,这个构造函数会用作为初始值的对象的每个数据成员的值,初始化将要建立的对象的对应数据成员,在很多情况下已经很完美了,所以不用自己声明复制构造函数

析构函数:

相当于是“反·构造函数”,完成对象被删除前的一些清理工作

除了不能有返回类型,不能return以外,还不能有参数传递

在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间

如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空

样例:(代码中有注释)

#include<iostream>
#include<algorithm>
using namespace std;
class Point
{public:Point(int x, int y);        //构造函数Point(const Point &b);        //复制构造函数,使用const是为了避免在初始化新对象过程中把原有的对象给改了~Point();                    //析构函数void Show();private:int *x, *y;
};
Point::Point(int a, int b)
{x = new int;y = new int;*x = a, *y = b;
}
Point::Point(const Point &b)
{cout<<"调用复制构造函数,为指针x和y申请内存"<<endl;x = new int;y = new int;*x = *b.x, *y = *b.y;
}
Point::~Point(void)
{cout<<"调用析构函数,释放内存"<<endl;delete x;delete y;
}void Point::Show()
{cout<<'('<<*x<<", "<<*y<<')'<<endl;
}
void Display(Point a)   //形实结合时,即用实参去初始化实参时,也会发生一次复制构造
{a.Show();//    注意如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函数,此时也会发生复制构造
}
int main(void)
{Point p(3, 5);Point q(p);Display(p), Display(q);return 0;
}
/*
调用复制构造函数,为指针x和y申请内存
调用复制构造函数,为指针x和y申请内存
(3, 5)
调用析构函数,释放内存
调用复制构造函数,为指针x和y申请内存
(3, 5)
调用析构函数,释放内存
调用析构函数,释放内存
调用析构函数,释放内存
*/

复制构造函数与析构函数相关推荐

  1. frontcon函数用不了_C++复制构造函数与析构函数

    想用机器人赋能未来,少不了扎实的编程的基本功,让我们跟着清华大学的C++语言程序设计课程一起过一遍C++的语法知识吧! 当定义基本类型的变量时,经常会用已有的变量去初始化新定义的变量,当定义对象的时候 ...

  2. 复制构造函数(拷贝构造函数)

    也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生.对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什 ...

  3. C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载

    C++--构造函数(拷贝构造,拷贝复制),析构函数,操作符重载 构造函数与析构函数:: 涉及构造函数还可以看这篇文章C++搞懂深拷贝初始化=与赋值=的区别 1.声明和定义构造函数和析构函数 构造函数在 ...

  4. C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)

    转载自:http://blog.csdn.net/jofranks/article/details/17438955 版权声明:本文为博主原创文章,未经博主允许不得转载. 在C++中,有三大函数复制控 ...

  5. C++——构造函数、析构函数以及复制构造函数

    文章目录 一.构造函数 1.1 构造函数是什么? 1.2 为什么要有构造函数? 1.3 如何使用构造函数? 1.4 构造函数的实现 二.复制构造函数 2.1 什么是复制构造函数? 2.2 为什么要有复 ...

  6. 6.12C++:继承基类的构造函数、单继承的构造函数、多继承的构造函数、派生类复制构造函数、派生类的析构函数

    1 继承基类的构造函数 class A{public:A(){}; // A的构造函数 }; class B : public A{public:using A:A: } 2 单继承的构造函数 cla ...

  7. C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)

    1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...

  8. php构造和析构方法,php5构造函数与析构函数实例

    自php5起,有了构造函数与析构函数. 这使得php更富有面向对象的魅力了. 在php4时,构造函数用的是与类同名的函数来进行构造这个动作. 例如: 复制代码 代码示例: /* * myclass.p ...

  9. c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]

    说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...

最新文章

  1. 如何获取字符串的最后一个字符?
  2. Androidz之Activity概要学习
  3. 真实实验测试多少节电池可以点亮白炽灯泡!
  4. nyist 一笔画问题
  5. android ViewPager动画的实现原理及效果
  6. 信息竞赛进阶指南--搜索相关(模板)
  7. devops定义_在层中定义DevOps
  8. vb 解析ini文件_PHP文件及运行(适合PHP初学者)
  9. 如何快速开发一个支持高效、高并发的分布式ID生成器(三)
  10. python常见异常及解决方法
  11. Poj1469_匈牙利算法_最大二分匹配
  12. 详解淘宝大秒杀系统设计,首次公开
  13. PowerMock进行mock测试
  14. Ubuntu的LTS 18.04 安装FRR
  15. 2021-01-03
  16. python中linspace函数_python np.linspace
  17. 百练 2755:神奇的口袋
  18. 数学分析_Tom Apostol_定理7.48:黎曼可积的充要条件
  19. C#,ArcGIS Engine开发入门教程
  20. 新零售赋能最古老产业 看阿里巴巴的农产品上行布局

热门文章

  1. python和c 的区别-Python和c语言的主要区别在哪
  2. python语言的读法-Python语言的优势有哪些?
  3. python编程是啥-什么是Python
  4. 向 iOS 设备发送推送通知
  5. kafka安装使用说明
  6. SIMIS计算机联锁系统,steam游戏sim
  7. win10一直正在检查更新_win10一直存在的烦人问题,终于被彻底解决!你会选择更新么?...
  8. java异常原则_有效处理Java异常三原则
  9. php 对象 scalar,Scalar Types
  10. openfiledialog选择文件会占用文件_铁皮文件柜的尺寸规格如何选择?选购花都文件柜要注意的问题...