From 529954b11fc550b930a9d311754d1c8fbf4f9b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=AB=E8=80=B3=E5=A0=80=E5=B7=9D=E9=9B=B7=E9=BC=93?= <58223265+neko-horikawaraiko@users.noreply.github.com> Date: Mon, 15 Mar 2021 19:58:40 +0800 Subject: [PATCH] Update item25.md --- 5.RRefMovSemPerfForw/item25.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.RRefMovSemPerfForw/item25.md b/5.RRefMovSemPerfForw/item25.md index 383b0a8..3e3a9e7 100644 --- a/5.RRefMovSemPerfForw/item25.md +++ b/5.RRefMovSemPerfForw/item25.md @@ -151,7 +151,7 @@ operator+(Matrix&& lhs, const Matrix& rhs) 如果`Matrix`不支持移动操作,将其转换为右值不会变差,因为右值可以直接被`Matrix`的拷贝构造函数拷贝(见[Item23](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item23.md))。如果`Matrix`随后支持了移动操作,`operator+`将在下一次编译时受益。就是这种情况,通过将`std::move`应用到按值返回的函数中要返回的右值引用上,不会损失什么(还可能获得收益)。 -使用通用引用和`std::forward`的情况类似。考虑函数模板`reduceAndCopy`收到一个未折叠(unreduced)对象`Fraction`,将其折叠,并返回一个折叠后的副本。如果原始对象是右值,可以将其移动到返回值中(避免拷贝开销),但是如果原始对象是左值,必须创建副本,因此如下代码: +使用通用引用和`std::forward`的情况类似。考虑函数模板`reduceAndCopy`收到一个未规约(unreduced)对象`Fraction`,将其规约,并返回一个规约后的副本。如果原始对象是右值,可以将其移动到返回值中(避免拷贝开销),但是如果原始对象是左值,必须创建副本,因此如下代码: ```cpp template