C++11中的String&&

String&&并不是指“引用的引用”,也不存在“引用的引用”这种东西。String&& 和 String&是两码事。

  String&&是C++11中的特性,叫做“右值引用”。它只能绑定到右值,即临时对象或将销毁的对象。因此可以把String&&所引用的资源强制拿来使用,且不用重新分配空间。即把String&&所引用对象的资源复制给*this。

例子:

String& operator=(String&& rhs)
{
	swap(rhs);
	return *this;
}

String(String&& rhs)
	: data_(rhs.data_)
{
	rhs.data_ = nullptr;
}

String用=赋值时,将rhs赋给*this。或是构造函数中将rhs.data_赋给this.data_,然后将其置空。

这种赋值运算符叫做“移动赋值运算符”,这种构造函数叫做“移动构造函数”。顾名思义,不同于以往的复制一份赋给新对象。而是直接通过“移动”的方式赋给新对象。这样的话效率会更高一点。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yeluorag/article/details/52423343
文章标签: C++
相关热词: c++11
上一篇Hadoop学习初步:Maven构建Hadoop项目
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭