本文主要是介绍C++11:noexcept修饰符、nullptr、原生字符串字面值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
noexcept修饰符
void func3() throw(int, char) //只能够抛出 int 和char类型的异常
{//C++11已经弃用这个声明throw 0;
}void BlockThrow() throw() //代表此函数不能抛出异常,如果抛出,就会异常
{throw 1;
}//代表此函数不能抛出异常,如果抛出,就会异常
//C++11 使用noexcept替代throw()
void BlockThrowPro() noexcept
{throw 2;
}
nullptr
nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0。
void func(int a)
{cout << __LINE__ << " a = " << a <<endl;
}void func(int *p)
{cout << __LINE__ << " p = " << p <<endl;
}int main()
{int *p1 = nullptr;int *p2 = NULL;if(p1 == p2){cout << "equal\n";}//int a = nullptr; //err, 编译失败,nullptr不能转型为intfunc(0); //调用func(int), 就算写NULL,也是调用这个func(nullptr);return 0;
}
原生字符串字面值
原生字符串字面值(raw string literal)使用户书写的字符串“所见即所得”。C++11中原生字符串的声明相当简单,只需在字符串前加入前缀,即字母R,并在引号中使用括号左右标识,就可以声明该字符串字面量为原生字符串了。
#include <iostream>
#include <string>
using namespace std;int main(void)
{cout << R"(hello, \n world)" << endl;string str = R"(helo \4 \r abc, mikehello\n)";cout << endl;cout << str << endl;return 0;
}
这篇关于C++11:noexcept修饰符、nullptr、原生字符串字面值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!