首页 > 解决方案 > C++ 入门 5 版。为 String 类编写移动构造函数

问题描述

我在 C++ Primer 5 ed 中有这个练习。它要求我为我的类添加一个移动构造函数和一个移动赋值运算符String

现在在实现文件中,我以这种方式定义了 move-ctor:

// move constructor
String::String(String&& rhs) noexcept :
    beg_(rhs.beg_), // or beg_(std::move(rhs.beg_))?
    end_(rhs.end_),
    off_cap_(rhs.off_cap_),
    alloc_(rhs.alloc_)// or alloc_(std::move(rhs.alloc_))?
{
    std::cout << "String move-ctor\n";
    rhs.beg_ = rhs.end_ = rhs.off_cap_ = nullptr; // putting objects in a destructible valid state
        // alloc_
}

PS:请不要问我是否违反了 3、5 和 6 的规则,因为为了可读性和简洁性,我没有从我的源代码中复制它。

标签: c++c++11allocatormove-constructor

解决方案


推荐阅读