在C++11的新特性中,关于左值/右值的对象调用函数,有了一些新的变化。

如下面的代码:

class Widget {
public:void doWork() & //只有*this为左值的时候才能被调用{std::cout << "left value call" << std::endl;}void doWork() && //只有*this为右值的时候才能被调用{std::cout << "right value call" << std::endl;}int& RetValue() & {int b = 10;return b;}int&& RetValue() &&{int b = 10;return std::move(b);}int m_value;
}; // 创建一个右值对象
static Widget make()
{Widget w;return w;
}int main()
{std::cout << "============1============" << std::endl;Widget w;w.doWork();std::cout << "============2============" << std::endl;make().doWork();std::move(w).doWork();
}输出:
============1============
left value call
============2============
right value call
right value call

c++11 函数的引用限定符(reference qualifiers)相关推荐

  1. C++ 右值引用 | 左值、右值、move、移动语义、引用限定符

    文章目录 C++11为什么引入右值? 区分左值引用.右值引用 move 移动语义 移动构造函数 移动赋值运算符 合成的移动操作 小结 引用限定符 规定this是左值or右值 引用限定符与重载 C++1 ...

  2. C++ Primer 5th笔记(chap 13 拷贝控制)引用限定符

    1. 问题 关于右值和左值引用成员函数,通常在一个对象上调用成员函数,而不管对象是一个左值还是一个右值: string s1 = "a value",s2 = "anot ...

  3. C++ 对象移动(右值引用()、移动构造函数、移动赋值运算符、引用限定函数)

    原文:对象移动(右值引用(&&).移动构造函数.移动赋值运算符.引用限定函数) 一.对象移动概述 C++11标准引入了"对象移动"的概念 对象移动的特性是:可以移动 ...

  4. 固有的不可移植的特征之volatile限定符

    volatile的确切含义与机器相关,只能通过阅读编译器文档来理解,使用volatile的程序在移到新的机器或编译器时通常必须改变. 直接处理硬件的程序常具有这样的数据成员,它们的值由程序本身直接控制 ...

  5. 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例

    原文: 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 [源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者: ...

  6. 指针、引用以及const限定符、constexpr限定符

    文章目录 复合类型 引用 概念与使用 引用的定义 注意 指针 概念 声明方式 取地址符 指针值 空指针 利用指针访问对象 赋值和指针 void* 指针 指向指针的指针 指向指针的引用 初始化所有指针 ...

  7. C++11之decltype类型推导(使用场景、推导四规则、cv限定符)

    系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...

  8. C++11标准之右值引用(ravalue reference)

    C++11标准之右值引用(ravalue reference) 1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具 ...

  9. OpenCL Function Qualifiers (函数限定符)

    OpenCL Function Qualifiers (函数限定符) OpenCL 3.0 Reference Pages -> OpenCL Compiler -> Function Q ...

  10. C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示

    C++ 学习笔记(19)new/delete表达式.定位new.typeid.dynamic_cast.type_info.枚举类型.成员函数指针.union.位域.volatile限定符.链接指示 ...

最新文章

  1. 纯前端H5小应用_localStorage存储
  2. 基于JavaWeb实现网上花店商城系统
  3. 买游戏来运营_「笔吧评测室」双十一快来了,买游戏本要做好心理准备
  4. 英文文章如何进行略读
  5. java用数组实现随机不重复抽奖
  6. 入微:探究文档中找不到的12c并行索引扫描新特性
  7. 存储过程是用来干什么的_感情不是用来考验的
  8. Codeforces Round #334 (Div. 2) A. Uncowed Forces 水题
  9. linux命令iconv_Linux中iconv命令的简介和使用方法
  10. Ubuntu 8.10字体美化原理初步探索
  11. 当复制Web浏览器的SVN地址到TorioseSVN上时显示错误,无法解析URL
  12. 【NDN IoT】Caching in Named Data Networking for the Wireless Internet of Things
  13. 电池级碳酸氢锂除杂质钙镁离子工艺原理
  14. 不见的何止重城,隐隐的又岂是江树。
  15. docker webdav_【技术分享】利用WebDAV特性建立隐蔽后门
  16. 教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段
  17. TI-RTOS---TI-RTOS简介
  18. 写出求abc中最大数的c语言表达式,有3个整数abc由键盘输入输出其中最大的数
  19. php ios android 加密,在android/ios中加密,在php中解密
  20. JS -- 作用域、作用域链以及延长作用域链的方法

热门文章

  1. ppt 如何加背景音乐
  2. cad计算机绘图基础知识,CAD 计算机绘图基础课件.ppt
  3. 关于wkhtmltopdf生成pdf空白
  4. 单龙芯3A3000-7A1000PMON研究学习-(2)搭建交叉编译环境
  5. [分布式系列]Gossip协议
  6. 使用技巧-输出彩色TIF格式分类结果
  7. 【CicadaPlayer】av_rescale_q 学习:转换PTS和Duration
  8. 加域电脑如何取消锁屏
  9. 远程服务器 Linux 用cityscape训练DeepLabv3模型(Pytorch版)并用图像测试
  10. html m3u8 flash,m3u8插件-支持在pc端(flashplayer)播放m3u8格式文件-ckplayer使用方法...