zoukankan      html  css  js  c++  java
  • 【C++ 补习】Copy Control

    C++ Primer 5th edition, chapter 13.

    The Rule of Three

    • If a class needs a destructor, it almost surely needs a copy constructor and copy-assignment operator as well.

    • If a class needs a copy constructor, it almost surely needs a copy-assignment operator, and vice versa.

    The Copy and Swap Idiom

    Classes that define swap often use swap to define their assignment operator. These operators use a technique known as copy and swap. This technique swaps the left-hand operand with a copy of the right-hand operand. The interesting thing about this technique is that it automatically handles self assignment and is automatically exception safe.

    Rvalue References

    An rvalue reference is a reference that must be bound to an rvalue. Rvalue references have the important property that they may be bound only to an object that is about to be destroyed. As a result, we are free to "move" resources from an rvalue reference to another object.

    As we know, we cannot bind rvalue references to expressions that require a conversion, to literals, or to expressions that return an rvalue. Rvalue references have the opposite binding properties: We can bind an rvalue reference to these kinds of expressions, but we cannot directly bind an rvalue reference to an lvalue.

    The Synthesized Move Operations

    If a class defines its own copy constructor, copy-assignment operator, or destructor, the move constructor and move assignment operator are not synthesized. As a result, some classes do not have a move constructor or a move-assignment operator.

    The compiler will synthesize a move constructor or a move-assignment operator only if the class doesn't define any of its own copy-control members and if every nonstatic data member of the class can be moved. The compiler can move members of built-in type. It can also move members of a class type if the members's class has the corresponding move operation.

  • 相关阅读:
    ガリレオの苦悩 操縦る 3
    ガリレオの苦悩 操縦る 2
    ガリレオの苦悩 操縦る 1
    ガリレオの苦悩 落下る 2
    ガリレオの苦労 落下る 1
    magento搬家步骤和可能遇到的问题
    Magento 自定义URL 地址重写 分类分级显示
    234的笔记
    Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名
    怎么用jquery判断浏览器类型和版本号?
  • 原文地址:https://www.cnblogs.com/Patt/p/11517942.html
Copyright © 2011-2022 走看看