随笔分类 - C++11
摘要:在我们实际编程中,我们经常会碰到变量初始化的问题,对于不同的变量初始化的手段多种多样,比如说对于一个数组我们可以使用 int arr[] = {1,2,3}的方式初始化,又比如对于一个简单的结构体: struct A { int x; int y; }a={1,2}; struct A { int
阅读全文
摘要:新特性的目的 右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面: 左值与右值的定义 C+
阅读全文
摘要:Defaulted 函数 C++ 的类有四个特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。 如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一
阅读全文
摘要:我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code这个成员函
阅读全文
摘要:一、继承构造函数 继承构造函数的引入原因:如果基类的构造函数很多,那么子类的构造函数想要实现同样多的构造接口,必须一一调用基类的构造函数,有点麻烦。 于是乎:C++11引入继承构造函数,子类可以通过使用using声明来声明继承基类的构造函数。 使用using _A::_A; 把基类中的构造函数都继承
阅读全文
摘要:30多年来,C++一直没有继承控制关键字。最起码这是不容易的,禁止一个类的进一步衍生是可能的但也很棘手。为避免用户在派生类中重载一个虚函数,你不得不向后考虑。 C++ 11添加了两个继承控制关键字:override和final override:确保在派生类中声明的重载函数跟基类的虚函数有相同的签名
阅读全文
摘要:在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。使用auto会拖慢c++效率吗?完全不会,因为在编译阶段编译器已经帮程序员推导好了变量的类型。使用auto会拖累C++编译效率吗?完
阅读全文
摘要:C++中的explicit关键字只能用于修饰只有一个参数的类构造函数 , 它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下为implicit(隐式)。 关于explicit关键字,先看看MSDN上的解释: This ke
阅读全文
摘要:在标准C++11之前的枚举是继承C的,枚举类型不是类型安全的。枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较。 一、C中enum类型的局限语法: 1、非强类型作用域上面两种不同类型的枚举都含有a枚举常量,在相同作用域会发生冲突,编译会报错2、允许编译器隐式类型转换if(type1::a
阅读全文
摘要:C++11为了提高代码执行效率做了一些改善。这种改善之一就是:生成常量表达式,允许程序利用编译时的计算能力。假如你熟悉模板元编程,你将发现constexpr使这一切变得更加简单。constexpr使我们很容易利用上编译时编程的优势。常量表达式主要是允许一些计算发生在编译时,即发生在代码编译而不是运行
阅读全文
摘要:POD,全称plain old data,plain代表它是一个普通类型,old代表它可以与c兼容,可以使用比如memcpy()这类c中最原始函数进行操作。C++11中把POD分为了两个基本概念的集合,即:平凡的(trival)和标准布局的(standard layout)。 1、首先是平凡的(tr
阅读全文
摘要:C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。 其语法:static_assert(常量表达式,提示字符串)。 如果第一个参数常量表达式的值为false,会产生一条编译错误,错误位置就是该static_assert语句所在行,第二个参数就是错误提示字
阅读全文
摘要:#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(
阅读全文
摘要:STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数
阅读全文
摘要:STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象. STL中算法大致分为四类: 1、
阅读全文
摘要:容器分为顺序容器与关联容器,顺序容器也称为序列式容器。序列式容器按元素插入的顺序存储元素,这些元素可以进行排序,但未必是有序的。C++本身内置了一个序列式容器array(数组),STL另外提供了vector,list,forward_list,deque,stack,queue,priority-q
阅读全文
摘要:相比于C++98标准,C++11整型的最大改变就是多了 long long。分为两种:long long 和unsigned long long。在C++11中,标准要求long long 整型可以在不同平台上有不同的长度,但至少有64位。我们在写常数字面量时,可以使用LL后缀(或是ll)标识一个l
阅读全文
摘要:cocos new 出新的项目之后,仔细阅读代码,才发现了一句3.0区别于2.0的代码: 2.0内的代码用的不是CC_CALLBACK_1而是menu_selector. CC_CALLBACK系列是3.0基于c++11的特性新增的。CC_CALLBACK系列的定义如下: 可以看出,CC_CALL_
阅读全文