C++值的分类 —— 摘自维基百科
来源:互联网 发布:淘宝如何抢秒杀商品 编辑:程序博客网 时间:2024/06/05 09:33
在C++11,对于值的分类,要考虑标识(identity)与可移动性(movability),二者的组合产生了五种分类:
- 基础值类型
- 左值lvalue:可以用取地址运算符&获取地址的表达式。也可定义为非临时对象或非成员函数。具有标识,但不可移动。这也是C++03的经典左值。可用于初始化左值引用。可以有不完备类型(incomplete type)。包括:
- 作用域中的变量名与函数名,不论其类型。因此,具名的右值引用,即具有右值引用类型的变量,也是左值表达式,这符合一般规律,不是特例。
- 函数调用表达式或重载运算符表达式,如果其返回类型为左值引用。
- 内建的先增(前缀++)、先减(前缀--)、解引用(dereference)、赋值、复合赋值、下标(除了数组临终值)、成员访问(除了临终值的非静态非引用成员、成员枚举值、非静态成员函数),通过数据成员指针的访问且左端操作数为左值、逗号运算符且右端的操作数为左值、三元条件运算符(ternary conditional)且第二与第三操作数为左值。
- 到左值引用类型的类型转换表达式。
- 字符串字面量(string literal)
- 函数调用表达式如果函数返回类型为到函数类型的右值引用
- 类型转换表达式,转换为到函数的右值引用
- 临终值xvalue(expiring value):具有标识,并且可以移动。对应的对象接近生存期结束,但其内容尚未被移走。可以多态;非类对象可以cv限定。包括:
- 函数调用或重载的运算符表达式,如果返回类型是右值引用。
- 类型转换表达式,转换为右值引用,如static_cast<T&&>(val)或(T&&)val
- 访问xvalue的非静态类成员。
- 指向数据成员的指针表达式,第一操作数是xvalue
- 纯右值prvalue:不具有标识,但可以移动。对应临时对象或不对应任何对象的值。纯右值不能是多态的;临时对象的动态类型是表达式类型;非类且非数组的纯右值不能是const限定的;不能有不完备类型(除了void)。包括:
- 字面量(除了字符串字面量)。
- 函数调用或重载的运算符表达式,如果返回类型不是引用。
- 内建后增、后减、算术与逻辑运算符、比较运算符、取地址运算符、访问成员枚举值、访问非静态成员函数、访问右值的非静态非引用数据成员、访问右值的数据成员指针或非静态函数成员指针、逗号运算符且右端操作数为右值、三元条件运算符且第二或第三操作数不是左值。
- 类型转换表达式,转换为非引用类型。
- Lambda表达式
- 左值lvalue:可以用取地址运算符&获取地址的表达式。也可定义为非临时对象或非成员函数。具有标识,但不可移动。这也是C++03的经典左值。可用于初始化左值引用。可以有不完备类型(incomplete type)。包括:
- 广义左值glvalue:具有标识。包括左值与临终值。可以多态、动态类型。
- 右值rvalue:可以移动。包括濒死值与纯右值。不能通过&运算符取地址。
0 0
- C++值的分类 —— 摘自维基百科
- MASM介绍——摘自维基百科
- C++引用折叠 —— 摘自维基百科
- [翻译]Linter简介-摘自维基百科
- C/C++编程时的内存分类——摘自《程序员面试宝典》
- 基于维基百科的用户意图分类
- 概率分布(摘自维基百科未排版)
- 进程与线程(摘自维基百科)
- 大小端模式区别—摘自百度百科
- tmux的快捷键(摘自百度百科)
- koing定理的证明(摘自互动百科)
- pthread_cond_signal函数的使用[摘自百科]
- 世界上最值钱的东西是什么?——摘自2010年9月《家庭百科报》幸福特刊
- GP技术的展望——C-- 莫华枫 摘自 longshanks。
- Objective-C 的由来 转自维基百科
- 读《基于中文维基百科链接结构与分类体系的语义相关度计算》
- YUV,是一种颜色编码方法(摘自 维基百科)
- YUV,是一种颜色编码方法(摘自 维基百科)
- 【生活】年化收益率、七日年化收益率这些事
- 几个简单的jQuery使用方法
- IDEA 旗舰版 使用Maven创建Web工程 并部署tomcat
- Android系统启动过程
- lightoj 1067 - Combinations (组合数、乘法逆元)
- C++值的分类 —— 摘自维基百科
- Android LocalBroadcastManager使用方法和代码流程分析 .
- Java IO最详解
- spring-security + ldap的认证配置
- struts2 拦截器和actioninvocation
- MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile
- HDU2546 饭卡(01背包)
- SAPUI5用了哪些web技术?
- (转)CEPH命令