C++补充篇- C++11 及其它特性
Posted Respect@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++补充篇- C++11 及其它特性相关的知识,希望对你有一定的参考价值。
explicit
explicit /ɪkˈsplɪsɪt/ 明确的;清楚的;直率的;详述的
作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换! 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
#include <iostream>
#include <string>
using namespace std;
class student {
public:
student(int _age)
{
age = _age;
cout << "age=" << age << endl;
}
student(int _age, const string _name)
{
age = _age;
name = _name;
cout << "age=" << age << "; name=" << name << endl;
}
~student()
{
}
int getAge()
{
return age;
}
string getName() {
return name;
}
private:
int age;
string name;
};
int main(void) {
student xiaoM(18); //显示构造
student xiaoW = 18; //隐式构造
//student xiaoHua(19, "小花"); //显示构造
//student xiaoMei = { 18, "小美" }; //隐式构造 初始化参数列表,C++11 前编译不能通过,C++11新增特性
system("pause");
return 0;
}
左值和右值
存储的层次结构
左值和右值的概念
-
按字面意思,通俗地说。以赋值符号 = 为界,= 左边的就是左值(lvalue),= 右边就是右值(rvalue)。
int a = 666; 左值 右值 int b = 888; 左值 右值 int c = a + b; 左值 右值 右值
lvalue - 代表一个在内存中占有确定位置的对象(换句话说就是有一个地址)。
rvalue - 通过排他性来定义,每个表达式不是lvalue就是rvalue。因此从上面的
lvalue的定义,rvalue是在不在内存中占有确定位置的表达式,而是存在在寄存器中。
所有的左值(无论是数组,函数或不完全类型)都可以转换成右值。
以上是关于C++补充篇- C++11 及其它特性的主要内容,如果未能解决你的问题,请参考以下文章
Android Multimedia框架总结C++中MediaPlayer的C/S架构补充及MediaService介绍
Android Multimedia框架总结C++中MediaPlayer的C/S架构补充及MediaService介绍