成员函数右值引用限定符与std::move()的问题
书上例子是这样的:
我想问的是:
既然有了&&限定符,说明*this本身就是右值,为何还要std::move(*this)呢?直接return new Quote(*this);不就行了嘛?难道是为了让人一目了然?
哦对了,书上前面说智能指针比指针好,那么这里为什么不用智能指针呢?
如
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)
【C++程序设计】新手题库核心知识点解析:涵盖基础语法、函数设计、类与继承、资源管理及STL应用实战
C++程序新手题库
C++11中std::move、std::forward、左右值引用、移动构造函数的测试问题
主要介绍了C++11中std::move、std::forward、左右值引用、移动构造函数的测试,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
关于c++的 右值 右值引用 move
简介 第一次接触c++move操作就懵逼了,一直想探个究竟,但是右值以及右值引用思考了好长时间,就是不得要领,今天终于有所收获,写下第一篇博客,一方面为了帮助一些刚入门的朋友,另一方面也是帮助自己今后复习。 右值 左值 右值引用 左值引用 含义 左值是一个持久的量,右值是一个短暂的量。那怎么算持久怎么算短暂呢?取决于我的代码里有没有一个变量来保存他。举个例子: int i = 5; string s1(“ppap”); 都可以完成取地址的操作的操作 &i,&si; 那么定义一个左值引用,就是给这些地址起一个其他的名字罢了,地址是不会发生变化的,也就是说左值引用的本质其实还是指针: int &
浅谈C++左值引用和右值引用
下面小编就为大家带来一篇浅谈C++左值引用和右值引用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


