美文网首页
拷贝构造函数

拷贝构造函数

作者: 锅锅锅锅锅 | 来源:发表于2020-03-25 08:59 被阅读0次

1.概念:拷贝构造函数是一个特殊的构造函数,它函数名和类型相同,且函数的一个必要的参数必须是此类的引用变量

2.拷贝构造函数调用时机

(1)对象以值传递的方式传给函数

(2)对象以值传递的方式返回

(3)对象需要通过另一个对象初始化

3.浅拷贝和深拷贝

(1)默认拷贝构造函数:它使用旧对象的数据成员的值用值传递的方式一个个给新对象的成员赋值,默认拷贝构造函数没有处理静态成员,当需要拷贝静态成员时,需要重新定义拷贝构造函数

(2)浅拷贝:默认拷贝是浅拷贝的一种,在对象复制时,只对对象中的数据成员进行简单的赋值,大多数情况下浅拷贝都能很好的工作,但是一旦对象存在动态成员,浅拷贝就会出现问题(动态成员所在内存空间在析构时会被释放两次)

(3)深拷贝

在深拷贝的情况下,对于对象中动态成员,会重新动态分配空间

4.防止默认拷贝发送

声明一个私有的拷贝构造函数,因为这样拷贝构造函数是私有的,如果有用户试图按值传递或函数返回该类对象,将得到一个编译错误,从而可以避免按值传递或返回对象。

5.拷贝构造函数的几个细节

(1)拷贝构造函数可以调用private成员变量吗?

拷贝构造函数是一种特殊的构造函数,其操作的还是自己类的成员变量,所以不受private限制

(2)拷贝构造函数形态

对于一个类X,如果一个构造函数的第一个参数是下列之一:

a)X&

b)const X&

c)volatile X&

d)const volatile X&

且没有其他参数或者其他参数都有默认值,那么这个函数是拷贝构造函数

(3)一个类可以存在多个拷贝构造函数

相关文章

  • C++语言基础(02)

    1.可变参数 2.构造函数、析构函数、拷贝构造函数 构造函数 拷贝构造函数 //浅拷贝(值拷贝)问题 //深拷贝

  • C++面向对象高级编程(上)-第二周-博览网

    第二周 三大函数:拷贝构造,拷贝赋值,析构 字符串的构造函数,拷贝构造函数, 拷贝构造函数和拷贝赋值函数没有自主定...

  • (GeekBand)Second class

    一、Big Three:拷贝构造函数,拷贝赋值函数,析构函数 1.拷贝构造函数 文字定义:拷贝构造函数,又称复制构...

  • c++:拷贝构造函数&&深浅拷贝

    默认拷贝构造函数的汇编代码: 其实就相当于这一段代码 拷贝构造函数 多态拷贝构造函数 子类拷贝构造函数调用父类拷贝...

  • C++之构造进阶之拷贝构造

    拷贝构造函数的概述 拷贝构造函数的本质是构造函数。 调用拷贝构造的时机:旧对象给新对象初始化。 用户不提供拷贝构造...

  • 博览网--C++面向对象高级编程(上)-- C++学习第二周笔记

    一、拷贝构造, 拷贝赋值, 析构 Class 带指针 , 必须有拷贝构造和拷贝赋值函数 1) 拷贝构造函数: ...

  • C++boolan part1_week2

    Big Three三个特殊函数 (拷贝构造函数、拷贝赋值函数、析构函数) 1 拷贝构造函数 定义:如果一个构造函数...

  • c++11 拷贝控制

    拷贝控制操作包括,拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。拷贝和移动构造函数定义了用...

  • 20-拷贝构造函数

    拷贝构造函数(Copy Constructor) 拷贝构造函数,也是构造函数的一种。大家都知道,构造函数是在对象创...

  • C++ 构造函数,类的成员变量

    c++ 05 构造函数无参构造函数有参构造函数 拷贝构造函数 浅拷贝 深拷贝 类的成员变量 四类特殊的成员变量

网友评论

      本文标题:拷贝构造函数

      本文链接:https://www.haomeiwen.com/subject/ukazyhtx.html