相关疑难解决方法(0)

移动语义和运算符重载

这与Matthieu M.提供的关于如何利用+运算符重载(通常是不直接重新分配回左侧参数的运算符)一起使用移动语义的答案有关.

他建议实施三种不同的重载:

inline T operator+(T left, T const& right) { left += right; return left; }
inline T operator+(T const& left, T right) { right += left; return right; } // commutative
inline T operator+(T left, T&& right) { left += right; return left; } // disambiguation
Run Code Online (Sandbox Code Playgroud)

1号和3号是有道理的,但我不明白2的目的是什么.评论建议交换处理,但似乎1和2是互斥的(即实现两个结果模糊)

例如,所有3个实现:

T a, b, c;
c = a + b;
Run Code Online (Sandbox Code Playgroud)

编译器输出:

1>          error C2593: 'operator +' is ambiguous
1>          could be 'T operator +(const T &,T)'
1>          or       'T …

c++ move operator-overloading move-semantics c++11

8
推荐指数
2
解决办法
3059
查看次数

标签 统计

c++ ×1

c++11 ×1

move ×1

move-semantics ×1

operator-overloading ×1