首页 > 编程语言 >C++11:noexcept修饰符、nullptr、原生字符串字面值

C++11:noexcept修饰符、nullptr、原生字符串字面值

时间:2022-09-28 21:03:10浏览次数:63  
标签:11 cout int noexcept 修饰符 C++ throw 字符串 void


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不能转型为int

func(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, mike
hello\n)";
cout << endl;
cout << str << endl;

return 0;
}


标签:11,cout,int,noexcept,修饰符,C++,throw,字符串,void
From: https://blog.51cto.com/u_3002289/5720821

相关文章

  • C++11:智能指针
    C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smartpointer),定义在memory中。可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终......
  • C++11:std::bind
    std::bind是这样一种机制,它可以预先把指定可调用实体的某些参数绑定到已有的变量,产生一个新的可调用实体,这种机制在回调函数的使用过程中也颇为有用。C++98中,有两个函数bind......
  • C++11:强类型枚举
    C++11引入了一种新的枚举类型,即“枚举类”,又称“强类型枚举”。声明请类型枚举非常简单,只需要在enum后加上使用class或struct。如:enumOld{Yes,No};//oldstyl......
  • C++11:类的改进
    继承构造C++11允许派生类继承基类的构造函数(默认构造函数、复制构造函数、移动构造函数除外)。#include<iostream>usingnamespacestd;//基类classA{public:A(intx,......
  • C++11:右值引用
    左值、右值在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右......
  • DFS算法练习 POJ1111; POJ1129; POJ2245; POJ2657
    POJ1111:importjava.util.Scanner;/***@Authorjinjun99*@DateCreatedin2022/9/279:49*@Description*@Sinceversion-1.0*/publicclassMain{......
  • protobuf入门教程(四):repeated限定修饰符
    限定修饰符说明repeated代表可重复,我们可以理解为数组:syntax="proto3";//指定版本信息,不指定会报错messagePerson//message为关键字,作用为定义一种消息类型{string......
  • C++11:初始化
    类内成员初始化classMem{public:Mem(inti):m(i){}//初始化列表给m初始化intm;};classGroup{public:Group(){}private:intdata=1;//使用"=......
  • C++11:移动语义
    为什么需要移动语义#include<iostream>usingnamespacestd;classTest{public:Test(inta=0){//普通构造函数d=newint(a);cout<<"构造函......
  • C++11:std::move和std::forward
    标准库函数std::move既然编译器只对右值引用才能调用转移构造函数和转移赋值函数,而所有命名对象都只能是左值引用,如果已知一个命名对象不再被使用而想对它调用转移构造函数......