相关疑难解决方法(0)

C++ 11 Const引用VS移动语义

我想知道在C++ 11中我还需要在参数中使用const引用.我不完全理解移动语义,但我认为这是一个合法的问题.此问题仅适用于const引用替换正在进行的副本而仅需要"读取"该值(例如const成员函数的使用)的情况.

通常我会写一个(成员)函数,如下所示:

#include <vector>

template<class T>
class Vector {
    std::vector<T> _impl;
public:
    void add(const T& value) {
         _impl.push_back(value);
    }
};
Run Code Online (Sandbox Code Playgroud)

但是我认为可以安全地假设编译器会使用移动语义来优化它,如果我这样写它并且class Tofcourse实现了一个移动构造函数:

#include <vector>

template<class T>
class Vector {
    std::vector<T> _impl;
public:
    void add(T value) {
         _impl.push_back(value);
    }
};
Run Code Online (Sandbox Code Playgroud)

我对吗?如果是这样,假设它可以在任何情况下使用是否安全?如果没有,我想知道哪个.这将使生活变得更加容易,因为我不必为基本类型实现类专门化,例如,它看起来更清晰.

const move-semantics c++11

33
推荐指数
1
解决办法
9936
查看次数

标签 统计

c++11 ×1

const ×1

move-semantics ×1