美文网首页
拷贝构造函数

拷贝构造函数

作者: 吃柠檬的鸮 | 来源:发表于2019-05-03 12:29 被阅读0次

通过拷贝新建对象时可使用拷贝构造函数(特别是对象的传值时)。仅在代码中需要拷贝一个类对象的时候使用拷贝构造函数;不需要拷贝构造函数时应使用 DISALLOW_COPY_AND_ASSIGN
优点:拷贝构造函数使得拷贝对象更加容易,STL 要求所有内容可拷贝、可赋值。
缺点:C++ 中对象的隐式拷贝是导致很多性能问题和 bugs 的根源。拷贝构造函数降低了代码的可读性,相比按引用传递,跟踪按值传递的对象更加困难,对象修改的地方变得难以捉摸。
结论:大量的类并不需要可拷贝,也不需要一个拷贝构造函数或赋值操作。不幸的是,如果你不主动声明它们,编译器会为你自动生成,而且是 public 的。
一个解决的方法是,在类的 private 中添加空的(dummy)拷贝构造函数和赋值操作,只有声明而没有定义。由于这些空程序声明为 private,当其他代码试图使用它们的时候,编译器将报错。为了方便,可以使用宏 DISALLOW_COPY_AND_ASSIGN。如果类确实需要可拷贝,应在该类的头文件中说明缘由,并适当定义拷贝构造函数和赋值操作,注意在 operator= 中检测自赋值的情况。
在将类作为 STL 容器值的时候,应该使用指针指向 STL 容器中的对象,而不是使类可拷贝,可以考虑使用 std::tr1::shared_ptr。

相关文章

  • 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/bqianqtx.html