美文网首页
拷贝构造函数

拷贝构造函数

作者: 吃柠檬的鸮 | 来源:发表于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。

    相关文章

      网友评论

          本文标题:拷贝构造函数

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