成员函数右值引用限定符与std::move()的问题

agfav12 agfav12 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
书上例子是这样的:
virtual Quote* clone() && {return new Quote(std::move(*this));}

我想问的是:
既然有了&&限定符,说明*this本身就是右值,为何还要std::move(*this)呢?直接return new Quote(*this);不就行了嘛?难道是为了让人一目了然?
哦对了,书上前面说智能指针比指针好,那么这里为什么不用智能指针呢?
如
virtual shared_ptr<Quote> clone() const & { return make_shared<Quote>(*this); }
...全文

相关推荐

快速理解现代C++(C++11~20)核心知识与实战.pptx

C++11 → C++20 核心知识与实战指南 基于 6 本经典教材整理 · 全部代码经编译验证 · 关键知识联网校对(cppreference / WG21 提案 / C++ Core Guidelines)

linx295

【C++程序设计】新手题库核心知识点解析:涵盖基础语法、函数设计、类与继承、资源管理及STL应用实战

C++程序新手题库

EverestVIP

C++11中std::move、std::forward、左右值引用、移动构造函数的测试问题

主要介绍了C++11中std::move、std::forward、左右值引用、移动构造函数的测试,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38571603

关于c++的 右值 右值引用 move

简介 第一次接触c++move操作就懵逼了,一直想探个究竟,但是右值以及右值引用思考了好长时间,就是不得要领,今天终于有所收获,写下第一篇博客,一方面为了帮助一些刚入门的朋友,另一方面也是帮助自己今后复习。 右值 左值 右值引用 左值引用 含义 左值是一个持久的量,右值是一个短暂的量。那怎么算持久怎么算短暂呢?取决于我的代码里有没有一个变量来保存他。举个例子: int i = 5; string s1(“ppap”); 都可以完成取地址的操作的操作 &i,&si; 那么定义一个左值引用,就是给这些地址起一个其他的名字罢了,地址是不会发生变化的,也就是说左值引用的本质其实还是指针: int &

weixin_38687199

浅谈C++左值引用和右值引用

下面小编就为大家带来一篇浅谈C++左值引用和右值引用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38686041
评论 8
收藏 已收藏
分享
返回顶部
agfav12
C++ 语言 65,214 成员 250,514 内容