c++11 左值引用、右值引用
c++11 左值引用、右值引用
#define _CRT_SECURE_NO_WARNINGS #include <iostream>
#include <string>
#include <vector>
#include <map> // C++中还有一个被广泛认同的说法,那就是可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值。
// 相对于左值,右值表示字面常量、表达式、函数的非引用返回值等。 /*
左值引用是对一个左值进行引用的类型,右值引用则是对一个右值进行引用的类型。 左值引用和右值引用都是属于引用类型。无论是声明一个左值引用还是右值引用,都必须立即进行初始化。
而其原因可以理解为是引用类型本身自己并不拥有所绑定对象的内存,只是该对象的一个别名。 左值引用是具名变量值的别名,而右值引用则是不具名(匿名)变量的别名。 */
int &a = ; // 左值引用绑定到右值,编译失败, err
int b = ; // 非常量左值
// “const 类型 &”为 “万能”的引用类型,它可以接受非常量左值、常量左值、右值对其进行初始化;
const int &c = b; // 常量左值引用绑定到非常量左值,编译通过, ok
const int d = ; // 常量左值
const int &e = c; // 常量左值引用绑定到常量左值,编译通过, ok
const int &b = ; // 常量左值引用绑定到右值,编程通过, ok // 右值引用,使用&&表示
int && r1 = ;
int x = ;
int y = ;
int && r2 = x + y; template <typename T>
T && a = ReturnRvalue(); // 通常情况下,右值引用是不能够绑定到任何的左值的
int c;
int && d = c; //err void process_value(int & i) //参数为左值引用
{
cout << "LValue processed: " << i << endl;
} void process_value(int && i) //参数为右值引用
{
cout << "RValue processed: " << i << endl;
} void mytest()
{
int a = ;
process_value(a); //LValue processed: 0
process_value(); //RValue processed: 1 return;
} int main()
{
mytest(); system("pause");
return ;
}
c++11 左值引用、右值引用的更多相关文章
- c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用
为什么要用移动语义 先看看下面的代码 // rvalue_reference.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #includ ...
- C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward
这篇文章要介绍的内容和标题一致,关于C++ 11中的这几个特性网上介绍的文章很多,看了一些之后想把几个比较关键的点总结记录一下,文章比较长.给出了很多代码示例,都是编译运行测试过的,希望能用这些帮助理 ...
- C++11 左值、右值、右值引用详解
C++11 左值.右值.右值引用详解 左值.右值 在C++11中所有的值必属于左值.右值两者之一,右值又可以细分为纯右值.将亡值. 在C++11中可以取地址的.有名字的就是左值,反之,不能取地址的.没 ...
- C++11 左值、右值、右值引用
左值.右值 在C++11中所有的值必属于左值.右值两者之一,右值又可以细分为纯右值.将亡值.在C++11中可以取地址的.有名字的就是左值,反之,不能取地址的.没有名字的就是右值(将亡值或纯右值).举个 ...
- [转]C++11 左值、右值、右值引用详解
https://blog.csdn.net/hyman_yx/article/details/52044632 左值.右值 在C++11中所有的值必属于左值.右值两者之一,右值又可以细分为纯右值.将亡 ...
- 左值与右值,左值引用与右值引用(C++11)
右值引用是解决语义支持提出的 这篇文章要介绍的内容和标题一致,关于C++ 11中的这几个特性网上介绍的文章很多,看了一些之后想把几个比较关键的点总结记录一下,文章比较长.给出了很多代码示例,都是编译运 ...
- C++11之右值引用(一):从左值右值到右值引用
C++98中规定了左值和右值的概念,但是一般程序员不需要理解的过于深入,因为对于C++98,左值和右值的划分一般用处不大,但是到了C++11,它的重要性开始显现出来. C++98标准明确规定: 左值是 ...
- 【转】C++11 标准新特性: 右值引用与转移语义
VS2013出来了,对于C++来说,最大的改变莫过于对于C++11新特性的支持,在网上搜了一下C++11的介绍,发现这篇文章非常不错,分享给大家同时自己作为存档. 原文地址:http://www.ib ...
- C++11新特性:右值引用和转移构造函数
问题背景 #include <iostream> using namespace std; vector<int> doubleValues (const vector< ...
- C++11 标准新特性: 右值引用与转移语义
文章出处:https://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ 新特性的目的 右值引用 (Rvalue Referene) ...
随机推荐
- C++设计模式(转)
在简书看到CharlesW同学学习设计模式的笔记,感觉很有意思(单身狗的妄想),转载下. 转载:https://www.jianshu.com/p/082662126bdd 好的软件设计是多用代码复用 ...
- AssetBundle压缩/内部结构/下载和加载
一.AssetBundle的压缩方式 Unity支持三种AssetBundle打包的压缩方式:LZMA, LZ4, 以及不压缩. 1.LZMA压缩方式 是一种默认的压缩形式,这种标准压缩格 ...
- 使用tensorflow进行mnist数字识别【模型训练+预测+模型保存+模型恢复】
import sys,os sys.path.append(os.pardir) import numpy as np from tensorflow.examples.tutorials.mni ...
- IP地址相关知识
IP地址基本概念 ...
- 2015第六届蓝桥杯C/C++ B组
奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...
- javaweb 安全传输签名机制
java web传输中的安全签名说明: 对请求中的数据 Key对进行签名,最终生成一个签名字符串,标记为sign:"djflw8wejwl9w0ejwlush8fw9ew9",位数 ...
- FFmpeg简单转码程序--视频剪辑
学习了雷神的文章,慕斯人分享精神,感其英年而逝,不胜唏嘘.他有分享一个转码程序<最简单的基于FFMPEG的转码程序>其中使用了filter(参考了ffmpeg.c中的流程),他曾说想再编写 ...
- Mongodb For Mac OSX && 登录验证
题外话:尽管有不少人贴出了 <我不用mongodb的十大理由> 等系列文章,但是 NoSQL 的发展不会因此而止步, mongodb 是 NoSQL 的典型代表,楼主还是抱乐观态度的,有人 ...
- find 删除文件
find 目录 -type f -name '*' -print0 | xargs -0 rm
- Scrum Meeting 6 -2014.11.12
今天apec最后一天,大部分任务都差不多了,局部测试问题不大.大家修复下小细节就可以开始整合了. Member Today’s task Next task 林豪森 协助测试及服务器部署 协助测试及服 ...