首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

` `void operator=(T&&)`和`T& operator=(T&&)`有什么区别?

void operator=(T&&)T& operator=(T&&)是C++中的移动赋值运算符函数(Move Assignment Operator)的两种形式。

  1. void operator=(T&&)是移动赋值运算符函数的一种形式,返回类型为void。它用于将右值引用(Rvalue Reference)绑定到一个对象,并将其资源所有权转移给目标对象。这种形式的移动赋值运算符函数通常用于移动语义的实现,即通过转移资源的所有权来提高性能。
  2. T& operator=(T&&)是移动赋值运算符函数的另一种形式,返回类型为目标对象的引用。它用于将右值引用(Rvalue Reference)绑定到一个对象,并将其资源所有权转移给目标对象。这种形式的移动赋值运算符函数通常用于实现链式赋值操作,即连续赋值多个对象。

区别:

  • 返回类型不同:void operator=(T&&)返回类型为void,而T& operator=(T&&)返回类型为目标对象的引用。
  • 使用方式不同:void operator=(T&&)通常用于移动语义的实现,而T& operator=(T&&)通常用于实现链式赋值操作。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/mu
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

左右值引用移动语义

因此一般情况下可以根据能否取到地址,来区分左值右值。 在了解左值右值之前,我们首先要知道表达式的概念:由运算符运算对象构成的计算式(类似数学中的算术表达式)。...其中,左值将亡值合称为泛左值,纯右值将亡值合称为右值。...它的形式如:T&,根据const属性可以分为两种: const左值引用 非const左值引用 例如: int a = 1; int& la = a;//la为a的左值引用(非const左值引用) la...&、const T&&、volatile T&& 或 const volatile T&&,且没有其他形参,或剩余形参都有默认值。...=的非模板非静态成员函数,它接受恰好一个 T&&、const T&&、volatile T&& 或 const volatile T&& 类型的形参。

84940

《C++Primer》第十六章 模板与泛型编程

>push_back(std::move(t)); } void pop_back(); // 元素访问 T& back(); T& operator[](size_type...类模板另一个(类或者函数)模板间友好关系最常见的形式是建立对应实例及其友元间的友好关系: // 首先将Blob、BlobPtroperator==声明为模板, 这些声明是operator==函数的参数声明及...remove_reference模板一个模板类型参数一个名为type的public类型成员。如果我们用一个引用类型实例化它,那么type表示被引用的类型。...5.4 编写接收右值引用参数的模板函数 如果一个函数参数是一个指向模板类型参数的右值引用(即如T&&),模板内的代码就会产生歧义: template void f3(T&& val... void f(const T&); // 左值cosnt右值 6.

1.8K10

C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』

拷贝构造函数 赋值重载函数(这两个函数都是重载版本),传值拷贝是比较低效的行为,了这两个函数后,类 中其他函数可以放心传值返回 力扣题目 「杨辉三角」中的函数返回值为 vector<vector<...&,因为模板具有自动推导的特性,当传入的参数为 左值 时,触发 引用折叠 机制,实际参数类型会变为 T&;当传入的参数为 右值 时,正常使用 T&& 就行了 这一机制在模板中称为 万能引用(引用折叠)...(end(), x); } void push_front(const T& x) { insert(begin(), x); } void pop_back() {...取地址重载 了 右值引用 + 移动语义 后,对 拷贝构造 赋值重载 进行了 “升级”,增加了 移动构造 移动赋值 这两个新函数,至此,类中共有八个天选之子(编译器会默认生成) 天选之子 的意思就是......Args> void showList(const T& val, Args... args) { cout << __FUNCTION__ << "(" << sizeof...

31750
领券