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_,然后将其置空。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值