工具库

functional std::bind std::bind接受一个可调用对象,生成一个新的可调用对象来适应原可调用对象的参数列表。 std::bind将可调用对象与其参数一起进行绑定,绑定后的结果可以使用std::function保存。std::bind主要有以下两个作用: 将可调用对象和其参数绑定成一个...

阅读更多

复制消除

复制消除(copy elision) 这项优化技术的中心思想是:一个函数若直接返回类对象,一般会生成临时类对象变量,需多次调用拷贝构造函数(copy constructor)造成效率低下,编译器对此优化,省略其中的拷贝构造环节,达到提升效率的目的。 本文以下面的类为例进行说明 struct Foo { F...

阅读更多

初始化

当对象在创建时获得了一个特定的值,我们说这个对象被初始化(initialized)。 这里说的对象特指一块能存储数据并具有某种类型的内存空间。 初始化与赋值的区别: 初始化:为对象申请存储空间,创建新的对象,并赋予其一个初始值。 赋值:是把已经创建的对象的当前值擦除,并以一个新值来替代。 ...

阅读更多

C++关键字-volatile

volatile关键字是一种类型修饰符。 volatile int a; volatile原义: A situation that is volatile is likely to change suddenly and unexpectedly. likely:可能的。这意味着被 volat...

阅读更多

C++关键字-typeid

typeid是一个运算符,用来获取类型信息: 对于基本类型,类型信息指数据的类型。 对于类类型,类型信息指对象所属的类、所包含的成员、所在的继承关系等。 typeid运算符返回std::type_info的引用(std::type_info在头文件typeinfo中定义) 如果表达式的类型是类类型...

阅读更多

C++关键字-thread_local

存储说明符 存储说明符(storage class specifier)是名字的声明语法中的声明说明符序列 的一部分。它与名字的作用域一同控制名字的两个独立性质:它的存储期和它的链接。 存储说明符 说明 备注 au...

阅读更多

C++关键字-static_assert

static_assert 在 c++用来做编译期间的断言,也叫静态断言。 该关键字是从 c 语言的 assert 中继承过来的,但是assert 是在运行期间的断言。 static_assert 的用法: static_assert(boolean expression, message) (C++...

阅读更多

C++关键字-extern

变量的定义和声明 声明:用于向程序表明变量的类型和名字。 定义:指申请存储空间,并将其与变量名相关联,除此之外,还可以为变量指定初始值。 变量可以声明多次,但只能定义一次。 一般而言,定义变量的时候,同时也声明了变量,但通过extern关键字可以只声明但不定义变量。 extern声明告诉编译器这个变量定义...

阅读更多