美文网首页
★19.关于移动操作

★19.关于移动操作

作者: iDragonfly | 来源:发表于2017-06-30 22:22 被阅读0次

    定义

    class A {
    public:
        A(A &&) = default;                // 显式定义移动构造操作
        A & operator=(A &&) = default;    // 显式定义移动赋值函数
        virtual ~A() = default;           // 一旦一个类定义了析构函数,此类及其派生类都不会合成移动操作
        std::string i;
    };
    
    class B : public A {
    public:
        B(B &&) = default;                // 显式定义移动赋值函数
        B & operator=(B &&) = default;    // 显式定义移动赋值函数
    };
    

    注意事项

    • 当自己定义了(即使是=default的方式)其中一个普通拷贝控制成员(析构函数,拷贝构造函数,拷贝赋值运算符)或设置为=delete,就不会合成任何移动操作。
    • 因为基类总是需要将析构函数设置为虚的,所以基类和其派生类总是不会合成移动操作,需要显式地定义移动操作。

    相关文章

      网友评论

          本文标题:★19.关于移动操作

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