weixin_43866023 2023-03-21 22:39 采纳率: 0%
浏览 24
已结题

对于操作右值引用的代码来说, 将一个右值引用绑定到一个左值的特性允许它们截断左值. 这句话如何理解?

如题, 这句话来自于c++ primer 5th 中文版 612页. 16.2.6 从一个左值static_cast到一个右值引用是允许的 小节下的第二段. 对应英文版692页

int&& rv = 5;
int lv = std::move(rv);

截断左值是什么意思, 我只知道将派生类对象赋值给基类非引用类型的左值会发生截断, 这里是指这个意思吗, 书中指向的469页的StrVec::reallocate的例子我没看明白哪里截断了, 求指点OTZ.

  • 写回答

1条回答 默认 最新

  • weixin_43866023 2023-03-23 21:40
    关注

    我似乎明白了. 所谓的右值引用绑定到一个左值实际是这样式的

    MyClass m;
    MyClass&& rv = std::move(m);
    //或者
    MyClass&& rv = static_cast<MyClass&&>(m);
    

    而截断就是左值变量对应的内存中的值不再由左值变量所属.
    如有不对, 请纠正

    评论

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 修改了问题 3月23日
  • 创建了问题 3月21日