一、c++工具
模板(函数模板、类模板)、异常处理、命名空间等功能是c++编译器的功能,语言本身不自带,这些功能已经成为ANSI C++标准了,建议所有的编译器都带这些功能,早期的c++是没有这些功能的。
二、异常处理
try:检查
catch:捕捉
throw:抛出
用法如下:
try
{
//可能出错的语句
//可以含有throw
}
catch(类型)
{
//如果try出错了就走catch,不出错就跳过catch
}
注意:
1.catch后要指定类型,比如catch(int)、catch(double)等,也可以catch(int x)、catch(double y),这样就同时拷贝了throw出来的值;
2.throw是throw变量,如throw a,a可以是int型、double型的变量,也可以是自己定义的类对象,throw和catch的类型要对应上,执行throw语句后立刻跳出该函数;
3.try和catch是整体,catch不能单独使用,try可以单独使用,如果都有,二者必须紧挨,不能在中间插入别的语句,try只能有一个,catch可以有多个,以便匹配不同的异常,如:
try
{}
catch(int)
{}
catch(double)
{}
catch(char)
{}
4.catch(...)可以捕捉任何异常,一般这种catch、语句放在最后;
三、命名空间
1.目的:命名空间是为了解决全局变量的同名冲突问题,c语言没有,c++才有;
2.命名空间可以包含变量、结构体、函数、类等,也可以嵌套,即命名空间里的命名空间;
3.可以自己定义命名空间,还是当作全局变量使用,namespace ns1 {... },用的时候ns1::xxxxx;若前面有using namespace xxx,则不用加ns1::;
4.命名空间可以没有名字,即namespace { ...},这样就不能在别的文件中引用了,只能用于本文件,类似于static的功能,static是c语言留下来的;
5.标准c++库,即iostream里的东西都是在命名空间std里定义的;
6.c语言的头文件带.h,c++不带,但是前面要加c。