美文网首页
C++拷贝构造函数总结

C++拷贝构造函数总结

作者: JxYoung | 来源:发表于2018-01-14 16:16 被阅读31次

C++的两种初始化方式

在阐述拷贝构造函数之前,先让我们来看一下C++支持的初始化方式。C++支持两种初始化方式。

  • 直接初始化
int a(5);
A a(2);
  • 拷贝初始化
int a = 5;
A a = a1;

除了类类型之外,两种初始化方式无差别。对于类类型,直接初始化调用相应的构造函数,拷贝初始化调用拷贝构造函数。

拷贝构造函数的一般形式

classname(const classname &obj){
    //...
}

拷贝构造函数和构造函数、析构函数一样,都是一种特殊的函数。如上所示,拷贝构造函数的函数名和类名一样,形参为同类型对象的const引用。可以看到,拷贝构造函数的实现是需要开发者自己实现的,具体在拷贝构造函数中实现什么,由开发者自己决定。但是正如其名字所含的意义,应当在拷贝构造函数中实现对象的拷贝操作。

什么时候必须实现拷贝构造函数?

  • 当类的成员变量含有指针类型时

  • 当类的成员在构造函数中分配其他资源时(待验证)

何时调用拷贝构造函数?

  • 一个对象以值传递的方式传入函数体
func(Object obj){//obj参数作为对象的值传递传入
     // ...
}
  • 一个对象以值传递的方式从函数返回
func(){
    Object obj;
    // ...
    return obj;//对象obj以值传递的形式返回
}
  • 一个对象是通过另一个对象初始化时
Object obj1;
Object obj2 = obj1;// obj2通过obj1初始化

当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用拷贝构造函数。当该类型的对象传递给函数或从函数返回该类型的对象时,将隐式调用拷贝构造函数。

相关文章

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

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

  • [C++之旅] 12 拷贝构造函数

    [C++之旅] 12 拷贝构造函数 拷贝构造函数的特点 如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构...

  • c++学习笔记2(GeekBand)

    拷贝构造、拷贝赋值和析构 c++中有Big Three三个特殊的函数,他们就是拷贝构造函数,拷贝赋值函数和析构函数...

  • C++ 拷贝控制(二) — 移动构造函数和移动赋值运算符

    相关文章: C++ 拷贝控制(一) — 析构函数、拷贝构造函数与拷贝赋值函数 C++ 引用类型 — 左值引用、常引...

  • C++ 拷贝构造函数浅析

    什么是拷贝构造函数:拷贝构造函数,顾名思义,就是在拷贝的时候调用的构造函数。 几个原则:C++ primer p4...

  • C++中容易被忽略的基础知识

    const和define的区别C++中static关键字的总结C++中的构造函数及深拷贝浅拷贝c++基础之引用和指...

  • C++拷贝构造函数——难点

    拷贝构造函数 - C++详细 | 编程字典

  • C++:面向对象基础

    构造函数 C++中有三种构造函数:默认构造函数,有参构造函数,拷贝构造函数 类对象的初始化 括号法//默认构造函数...

  • c++第二周笔记

    C++ 第二周笔记 本周的内容比较多,主要介绍了三个重要函数: 拷贝构造、拷贝赋值、析构函数。 1.拷贝构造函数。...

  • 浅析c++三大函数--GeekBand

    浅析c++ 三大函数 三大函数的特殊性 c++三大函数指的是拷贝构造、拷贝赋值、析构函数。这3个函数比较特殊: 一...

网友评论

      本文标题:C++拷贝构造函数总结

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