zoukankan      html  css  js  c++  java
  • 拷贝构造函数

    • 拷贝构造函数的参数一定要是本类对象的引用,为什么?原因在待会说

    • 拷贝构造函数的调用时机:
      1)在定义对象时用本类对象初始化新定义的对象
      2)本类对象作为函数参数时,调用函数时,实参对象会对形参进行初始化,那么就需要调用拷贝构造函数。(这也是为什么拷贝构造函数参数必须是本类对象的引用,因为如果形参时本类对象,那么在调用拷贝构造函数时,实参对形参赋值时又会调用拷贝构造函数,出现递归调用拷贝构造函数,并且一直递归下去)
      3)本类对象作为函数返回值,返回时创建一个临时对象,用返回的对象初始化临时对象,会调用拷贝构造函数。然后临时对象赋值给主函数中的对象,接着会析构临时对象(调用析构函数)。
       
    • 拷贝构造函数显式定义时机:
      当类的构造函数中有动态申请的空间时,需要显式定义一个拷贝构造函数,实现“深拷贝”,即对新对象重新申请同样大小的动态存储空间,并把已知对象的动态存储空间的内容复制到新对象的动态存储空间。
      因为当类的数据成员中有动态申请的数据空间,如果不定义拷贝构造函数,而使用类中默认的拷贝构造函数,对象会进行“浅拷贝”,拷贝后,即两个对象的指针会指向同一个内存空间,最后在析构对象时,会对同一个内存空间析构两次,出现运行错误。
  • 相关阅读:
    Python爬虫开发【第1篇】【爬虫案例】
    Python爬虫开发【第1篇】【动态HTML、Selenium、PhantomJS】
    Python爬虫开发【第1篇】【多线程爬虫及案例】
    C 调用 lua 函数
    预编译头文件 StdAfx.h
    系统托盘图标
    C 语言文件操作
    Unicode
    lua 的 WriteFile 和 ReadFile
    CreateFile,WriteFile,ReadFile
  • 原文地址:https://www.cnblogs.com/beaglebone/p/5726694.html
Copyright © 2011-2022 走看看