C++异常和C++11标准

异常

异常概念:程序中可预料但无法避免的错误
异常处理概念:从发生异常的地方开始终止,不再进行正常的流程,去转而执行特定的异常处理流程
关键字:
try: try块,受监控的代码块,它来捕获产生的异常。可以有多个try块,不同的try块监视不同的区域
catch: catch块,紧跟在try块后,且必须成对出现,可以有多个catch块(这点有点类似switch和case)它用来得到并处理try捕获的异常
throw: throw块,主动抛出某个表达式值类型的异常,如果当前没有try块监控,那沿调用链往上级抛该异常
抛出的表达式是什么类型,就由什么参数类型的catch接收并处理.

void Fun()
{	
	int n;
	cin>>n;
	if(n==0)
	throw "zero";//如果输入0,这里抛出的异常将会向上级抛出,即抛到main函数中
	try{    //监控花括号内的全部内容
		if(n>20)
			throw "overstep";//这里抛出的异常会有try接收,有这里的try后的catch处理
		if(n<0)
		{
			throw n;
		}
		else
		throw 1.23;
	}
	catch(int n)
		cout<<"fun--"<

C++11标准

这里只选择10个经典的较为常见的几个来说

1.数据初始化列表

//旧:
int a=0;
int b(1.1);
//新
int a={0};
int b={(int)1.1};//不能有精度的缺失 

2.空指针

//旧:
int *p=NULL;
//新:
int *p=nullptr;

3.自动类型

//旧:
int a=1;
//新:
auto a=1;
auto b=2.1;
//自动识别推导类型

4.decltype

int a=1;
decltype(a)b;//将a的类型给b做类型声明
b=2;

5.新的for循环规则

//旧的:
char * p= "abcd";
for(int i=0;i<4;++i)
{
	cout<

6.类型重定义

typedef int I;
//新的:
using I = int;

7.default在类中的用法

class CA
{
public:
	CA()
	{
		//旧方法
	}
	CA();
}
CA::CA()=default;//新方法,提醒系统用默认的构造函数

8.类中初始化数据成员

class CA
{
public:
	int a=10;//类似于函数缺省的作用,如果有构造函数赋值,会替代这里的初始化。
}

9.构造函数委托

class CA
{
public:
	int a;
	CA(int a){this->a=a;}
	CA():CA(1){}
}

10.禁止虚函数重写

class CA
{
public:
	virtual void fun()final;//final关键字,如果有类继承与CA在子类中,语法限定不能重写fun函数	
}

你可能感兴趣的:(C++基础)