C++关键字-noexcept

C++中的异常处理是在运行时而不是编译时检测的。为了实现运行时检测,编译器创建额外的代码,然而这会妨碍程序优化。 在实践中: 一个操作或者函数可能会抛出一个异常; 一个操作或者函数不可能抛出任何异常。 使用noexcept指定函数或操作不会抛出异常,会给编译器更大的优化空间,同时减少运行时开销。 ...

阅读更多

C++关键字-mutable

mutable从字面意思来说,是「可变的;会变的」 修饰类的成员变量,用来突破const的限制 #include <iostream> class Person{ public: explicit Person(int a):age(a){ } ~Person(){ } i...

阅读更多

C++关键字-explicit

explicit关键字只能用于修饰类构的造函数,表明该构造函数是显式的,不能用于隐式转换和复制初始化。 该关键字只能用来修饰类内部的构造函数; 禁止隐式调用拷贝构造函数 ; 禁止类对象之间的隐式转换; 一般只用于修饰单参构造函数,因为无参构造函数和多参构造函数本身就是显式调用的。 在C++...

阅读更多

C++关键字-alignas和alignof

alignof alignof(type),用于获取类型的对齐字节数;返回size_t类型;alignof只能用于类型。 #include <iostream> using namespace std; struct DemoStruct2 { short s1; ...

阅读更多

C++关键字-enum

枚举类型 枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。 枚举元素作为常量,它们是有值的。编译系统为每个枚举常量指定一个整数值。默认状态下,这个整数值就是所列举元素的序号,序号从0开始。 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前...

阅读更多

C++关键字-using

引入namespace using namespace std; 将nampespace中单个名字注入到当前作用域 将其它 namespace 的成员引入本命名空间的 当前作用域 (包括其嵌套作用域)  。 一次只引入一个命名空间成员。 using std::map map<int, int> ...

阅读更多

C++关键字-struct和class

struct和class有很大的相似性。 但是两者最大的区别就在于思想上,一般来说,struct更适合看成是一个数据结构(纯粹的数据对象,POD结构)的实现体,class更适合看成是一个对象的实现体。 1. 默认的访问权限 struct默认的数据访问控制是public的 calss默认的数据访问控制是priva...

阅读更多

C++关键字-new和delete

1. new操作符 new运算符用于在堆上动态分配。 如果分配成功,则返回指向分配内存的指针;如果分配失败,则抛出std::bad_alloc异常。 new内置类型 // 动态申请一个int类型的空间 int* a = new int; // 动态申请一个int类型的空间并初始化为11 int* b = ne...

阅读更多