1.auto auto是旧关键字,在C++11之前,auto用来声明自动变量,表明变量存储在栈,很少使用。在C++11中被赋予了新的含义和作用,用于类型推断。...为了避免这种错误,C++11引入了override关键字。...}; (2)C++11 中,delete 关键字可用于任何函数,不仅仅局限于类成员函数。...在C++11之前对齐方式是无法得知的,且不同的平台实现方式可能不同。C++11为了支持内存对齐,引入了两个关键字,对齐描述符alignas与操作符alignof。...---- 参考文献 [1]【C++11新特性】auto关键字 [2]C++11特性:decltype关键字 [3]C++开发者都应该使用的10个C++11特性 [4]constexpr与常量表达式
C++11中引入的auto主要有两种用途:自动类型推导和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。...新的 auto 关键字在声明一些迭代器、类模板等变量的时候,使用非常方便,具体可以看以下代码,有详细的注释。.... } // new的内存也一定要初始化,否则auto推倒不出到底是什么类型 auto k = 5; auto\* pk = new auto(5); // auto 关键字声明的变量必须初始化...引用类型可以接受 const 变量的反推,其他形式则不行 const int consta = 0; auto constb = consta; return 0; } 使用 auto 关键字有以下几点注意事项...will print int* auto& k = a; cout << typeid(k).name() << endl; // This will print int [9] 【decltype 关键字
int a =10 ; //拥有自动生命期 auto int b = 20 ;//拥有自动生命期 static int c = 30 ;//延长了生命期 C++98中的auto多余且极少使用,C++11...C++11 auto auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。...下面列举auto关键字的正确用法。 用于代替冗长复杂、变量使用范围专一的变量声明。...decltype操作符用于查询表达式的数据类型,也是C++11标准引入的新的运算符,其目的也是解决泛型编程中有些类型由模板参数决定,而难以表示它的问题。...初始化表达式为数组时,auto关键字推导类型为指针。
同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值。...而编译时类型推导,除了我们说过的auto关键字,还有本文的decltype。 decltype与auto关键字一样,用于进行编译时类型推导,不过它与auto还是有一些区别的。...标记符指的是除去关键字、字面量等编译器需要使用的标记之外的程序员自己定义的标记,而单个标记符对应的表达式即为标记符表达式。...我们可以利用C++11标准库中添加的模板类is_lvalue_reference来判断表达式是否为左值: cout ::...参考资料:《深入理解C++11》
1.auto auto是旧关键字,在C++11之前,auto用来声明自动变量,表明变量存储在栈,很少使用。在C++11中被赋予了新的含义和作用,用于类型推断。...auto关键字主要有两种用途:一是在变量定义时根据初始化表达式自动推断该变量的类型,二是在声明或定义函数时作为函数返回值的占位符,此时需要与关键字decltype连用。...为了避免这种错误,C++ 11 引入了override关键字。...}; (2)C++11 中,delete 关键字可用于任何函数,不仅仅局限于类成员函数。...+11新特性】auto关键字 [2]C++11特性:decltype关键字 [3]C++开发者都应该使用的10个C++11特性 [4]constexpr与常量表达式(c++11标准) [
【override】【final】关键字——帮助用户检测是否重写(C++11) 从上面可以看出,C++对函数重写的要求比较严格,但是有些情况下由于疏忽,可能会导致函数 名字母次序写反而无法构成重载,而这种错误在编译期间是不会报出的...,只有在程序运行时没有 得到预期结果才来debug会得不偿失,因此:C++11从两个角度提供了 override 和 final 两个关键字,可以帮 助用户检测是否重写。
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...接下来我将通过几篇文章来介绍一下C++11中重要的特性! 2 列表初始化 在C++11中加入了initializer_list标准库类型,用于表示某种特定类型的数组。...3 声明 3.1 auto关键字 在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。...3.2 decltype关键字 关键字decltype将变量的类型声明为表达式指定的类型。他和typeid有点像,不过进行的工作不一样: typeid:是用来查看变量的类型,返回值是一个字符串。...所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针 3.4 总结 这两个关键字在使用中很有可能会变成祸根!
function包装器 1.function包装器概念 function包装器也叫做适配器,C++11中的function本质是一个类模板,也是一个包装器。
C++11的大优势 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言...STL中容器新变化 4.1 新增容器 上面圈起来的就是C++11出现的新容器,但是真正有用的是unordered_map和unordered_set两个容器,其他两个容器显得很鸡肋,这也算是C++11...C++11之前拷贝构造: C++11移动构造: 5.2.2 移动赋值 上面是进行构造,如果我们是进行赋值呢?...C++11之前拷贝构造+拷贝赋值: C++11拷贝构造+移动赋值: 要注意的是: 浅拷贝的类不需要移动构造,深拷贝的类才需要移动构造。 C++11提供右值引用,本质是为了参数匹配时区分左值和右值。...C++11之后,新增了两个成员函数,移动构造和移动赋值函数。
如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的 调用。...短小函数定义 换用内联函数 三、auto关键字(C++11) 3.1 类型别名思考 随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在: 类型难于拼写 含义不明确导致容易出错 #include...然而有时候要做到这点并非那么容易,因此C++11给auto赋予了新的含义。...为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法 4. auto在实际中最常见的优势用法就是跟以后会讲到的C++11提供的新式for循环,还有 lambda表达式等进行配合使用...注意: 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
今天主要说的事C++11中的在实际开发中很少用到的特性,这些特性虽然很少用,但是使用之后又让人眼前一亮,心生佩服。...1.1 继承构造函数 C++11中,允许派生函数使用基类的构造函数,这样可以极大简化构造函数的编写,尤其是在基类成构造函数较多的情况下。...2 原始的字面量 编码时如果遇到需要传入文件路径时,一般要加上转义符,才能正确表示一个文件路径,C++11后,新增了原始字符串字面量“R”,原始字面量的使用不需要我们对字符串进行特殊处理,输出时就会输出字符串原始的含义
C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了 C++98称为C++11之前的最新C++标准名称。....name() 看推导的是什么类型,但是只能看并不能用 int i = 2; auto k = &i; cout << typeid(k).name() << endl; 3.3 decltype 关键字...强制生成默认函数的关键字default: C++11可以让你更好的控制要使用的默认函数。假设你要使用某个默认的函数,但是因为一些原 因这个函数没有默认生成。...比如:我们提供了拷贝构造,就不会生成移动构造了,那么我们可以 使用default关键字显示指定移动构造生成。...main() { Person s1; Person s2 = s1; Person s3 = std::move(s1); return 0; } 继承和多态中的final与override关键字
一.强制生成默认函数的关键字default 根据以上2,3点,我们知道: 没有实现 析构函数 、拷贝构造、拷贝赋值重载 中的任意一个,编译器才会生成默认的移动构造 如果我们已经自己生成了三个函数中的某一个...main() { Person s1; Person s2 = s1; Person s3 = std::move(s1); return 0; } 二.禁止生成默认函数的关键字
VS2010版本的C++新增了C++11特性,对原有的C++标准库扩展,融合BOOST库等三方库 1.关键字 auto自动类型推倒
pointers to class methods, functors (classes which overload operator()), and lambda functions (since c+...Prior to c++11, this was a relatively intimidating topic, since the syntax of function pointers and pointers...(cb_c); Lambda Function The last type of callable we’ll cover is the lambda function (introduced in c+...< std::endl; return EXIT_SUCCESS; } Callbacks are a striking example of how the improvements in c+...for implementing callbacks in your own project, and perhaps that it will spark interest in exploring c+
在C++11中,新增了两个默认成员函数 移动构造函数 移动赋值运算符重载 针对这两个新的默认成员函数,有了新的注意事项: 1、如果没有自己实现移动构造,且没有实现析构函数、拷贝构造、拷贝赋值重载中的任何一个...delete 禁止生成默认函数的关键字 比如要求delete关键字实现,一个类,只能在堆上创建对象。...释放ptr指向的空间要用 operator delete(),因为 delete会调用析构 可变参数模板 C++11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板 我们把带省略号的参数称为...= { (PrintArg(args), 0)... }; cout << endl; } int main() { ShowList(1, 'A', 3.14); return 0; } C+...注意: 在lambda函数定义中,参数列表和返回值类型都是可选部分,而捕捉列表和函数体可以为空,C++11中,最简单的lambda函数为:[] () ;该函数不能做任何事情,只是符合语法。
这篇文章讲解一下C++11的在随机数上的新特性。没记错的话,之前被爆出旧版的C++的随机函数存在安全漏洞(没记错的话好像微软又重写了一个安全版的?)。...C++11的随机数的用法如下 先定义一个default_random_engine default_random_engine engine(static_cast(time
C ++ 11引入了lambda,该lambda提供了一种语法上轻量级的方式来动态定义函数。它们还可以通过值或引用来捕获(或封闭)周围范围的变量。在本文中,我们...
C++11简介 C++11是C++编程语言的一个重要版本,它于2011年发布。...相比于C++98/03,C++11给C++带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...声明 c++11提供了多种简化声明的方式,尤其是在使用模板时。...有了auto自动推导类型之后,我们就可以省去写很长类型的麻烦了 3.2 decltype decltype是declaration type的缩写,在C++中,decltype是一个类型推断的关键字...关键字decltype将变量的类型声明为表达式指定的类型。
这一状况在C++11中得到了一定的改善,从此Unicode字符的存储有了统一类型: (1)char16_t:用于存储UTF-16编码的Unicode字符。...至于UTF-8编码的Unicode数据,C++11还是使用了8bits宽度的char类型数组来表示,而char16_t和char32_t的宽度由其名称可以看出,char16_t为16bits,char32...2.定义字符串的5种方式 除了使用新类型char16_t与char32_t来表示Unicode字符,此外,C++11还新增了三种前缀来定义不同编码的字符串,新增前缀如下: (1)u8表示为UTF-8...当编译器处理字符串时,可以通过前缀来判断字符串的编码类型,如果目标编码与原编码不同,则编译器会进行转换,比如C++11中的前缀u8表示目标编码为UTF-8的字符,如果代码文件采用的是GBK,编译器按照UTF...---- 参考文献 [1]深入理解C++11[M].8.3Unicode支持
领取专属 10元无门槛券
手把手带您无忧上云