C++补充篇- C++11 及其它特性

Posted Respect@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++补充篇- C++11 及其它特性相关的知识,希望对你有一定的参考价值。

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;
}

左值和右值

存储的层次结构
在这里插入图片描述

左值和右值的概念

  1. 按字面意思,通俗地说。以赋值符号 = 为界,= 左边的就是左值(lvalue),= 右边就是右值(rvalue)。

         int     a   =  666;
               左值    右值
    
         int     b   =  888;
               左值    右值
    
         int     c   =   a    +  b;
               左值    右值     右值
    

lvalue - 代表一个在内存中占有确定位置的对象(换句话说就是有一个地址)。
rvalue - 通过排他性来定义,每个表达式不是lvalue就是rvalue。因此从上面的
lvalue的定义,rvalue是在不在内存中占有确定位置的表达式,而是存在在寄存器中。

所有的左值(无论是数组,函数或不完全类型)都可以转换成右值。

以上是关于C++补充篇- C++11 及其它特性的主要内容,如果未能解决你的问题,请参考以下文章

从effective C++中窥探C++11特性

Android Multimedia框架总结C++中MediaPlayer的C/S架构补充及MediaService介绍

Android Multimedia框架总结C++中MediaPlayer的C/S架构补充及MediaService介绍

c++ c语言 - 控件及概述补充

C++ 梳理:跑通简单程序

C++学习:6补充