从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如: class Person { public: Person(const std::string& name): _name(name){} std::string name() const { return _name; } private: std::string name; } inline Person operator "" _psn (const char *name, size_t n)…
从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如: class Person { public: Person(const std::string& name): _name(name){} std::string name() const { return _name; } private: std::string name; } inline Person operator "" _psn (const char *name, size_t n)…
C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百科不是知道是台湾还是香港人翻译的然后由工具转换成简体中文的,有些术语和语言习惯和大陆程序不一样! 我决定结合这两个版本按照我自己的习惯把这篇文章整理到我的博客中.分享给关注我和关注C++11的朋友们. 当然了, 本人水平有限,英语水平也很一般,就把这个过程当做学习C++11的过程吧.文章中肯定会有很…
自己一直用的是C++98规范来编程,对于C++11只闻其名却没用过其特性.近期因为工作的需要,需要掌握C++11的一些特性,所以查阅了一些C++11资料.因为自己有C++98的基础,所以从C++98过渡到C++11并不算特别吃力,读了一些书籍后,算是对C++11有了个比较基础的理解,感觉程序员还是要经常保持新语言新特性的更新,现在 C++ 标准都出到C++17了!这篇文章就是对C++11一些常用新特性的一些总结,以C++98和 C++11在语法上的差异来突出C++11新特性的非凡优势. 新语法…
很多编程语言都有range for语法功能,自C++11起,终于将这个重要功能加入C++标准中.range for语句,可以方便的遍历给定序列中的每个元素并对其执行某种操作. 1.基本语法 for(declaration:expression) statement 其中,declaration定义一个变量,该变量将被用于访问序列中的基础元素,每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值.expression是一个对象,用于表示一个序列.statem…
C++11新特性总结可以参考:http://www.cnblogs.com/pzhfei/archive/2013/03/02/CPP_new_feature.html#section_6.8 C++的Lambda表达式在WIN RT的异步编程中,占有非常重要的作用.但C++的Lambda表达式又不同于其他语言,比如C#,javascript.本篇旨在讨论C++ Lambda表达式的基本语法和概念,希望大家多多指正. 首先,我们看一下Lambda表达式的基本构成: 1. 是捕获值列表,2.是传入…
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出这篇读书笔记的基础.C++作为踏入编程的最初语言,一直充满感情,而C++11作为新标准虽然推出一段时间了,却因为总总原因直到现在才去开始真正了解,不过一句话回荡在脑中:当你认为为时已晚的时候,恰恰是最早的时候!从C++98到C++11, C++11标准经历了10几年的沉淀,以全新的姿态迎接新的挑战,长话短说,…
1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; for(int x: vec) { cout<<x<<endl; } 2. 尾置返回类型 要想引入尾置类型,我们还得从复杂的类型声明说起.如果我们需要定义一个含有10个int元素的数组,一般是这样的: int arr[10] = {0}; 如果要定义指向这个数组的指针呢: int (*…
1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++11的比较好的书籍.这篇文章仅总结关于C++11中的新东西,老的东西不再赘述.本文的所有代码仅仅值列出关键代码,并且所有特性都已经用编译器验证过,我的编译环境 gcc 5.3.1  g++ 5.3.1 ,据说 4.7以上的版本已经支持大部分C++11的特性,VS系列的编译器对C++11的支持情况不甚了…
说是延时求值,注意还是想搞一搞std::function和std::bind. 之前博客<C++11新特性之std::function>注意是std::function怎样实现回调函数. 如今就算是补充吧,再把std::bind进行讨论讨论. 何为Callable Objects? 就可以调用对象,比方函数指针.仿函数.类成员函数指针等都可称为可调用对象. 对象包装器 Function wrapper Class that can wrap any kind of callable eleme…
一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题,C++11新标准就引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型.和原来那些只对应某种特定的类型说明符(例如 int)不同.auto 让编译器通过初始值来进行类型推演.从而获得定义变量的类型,所以说 auto 定义的变量必须有初始值. //由val_1 和val_2相加的结果可以推断出ite…
如题,我们今天要讲的是C++11引入的三种智能指针中的最后一个:weak_ptr.在学习weak_ptr之前最好对shared_ptr有所了解.如果你还不知道shared_ptr是何物,可以看看我的另一篇文章[C++11新特性] C++11智能指针之shared_ptr. 1.为什么需要weak_ptr?在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识.我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了…
本文记录下一些c++11新特性需要注意的方面,供日后参考 一.auto auto可以当成“占位符”,根据右边的类型自动推导出变量的类型.需要注意的是 auto不能解决溢出的问题. auto可以与指针和引用结合使用.和指针结合使用时,auto或者auto * 都可以,和引用结合使用时必须写成auto & auto “带不走”cv限制符 const ,volatile属性,需要cv属性时声明const auto,volatile auto auto声明多个变量时,以第一个变量推导出的类型为准 uns…
C++11新特性:          1.auto          2.nullptr          3.for          4.lambda表达式          5.override.final          6.右值引用          7.move构造函数          8.容器初始化       (1)auto     使用auto实现任意两个数的加法     (2)nullptr空指针     (3)for容器遍历     (4)lambda表达式 使用lam…
C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello"; //大括号初始化 struct Studnet{ char* name; int age; }; Studnet s={"dablelv",18}; //纯数据(Plain of Data,POD)类型对象 Studnet sArr[]={{"dablelv",1…
C++11新特性之六——元编程…
[转]Cocos2d-x 3.1.1 学习日志6--30分钟了解C++11新特性 Cocos2d-x 3.1.1 学习日志6--30分钟了解C++11新特性…
百度云及其他网盘下载地址:点我 编辑推荐 <深入理解C++11:C++11新特性解析与应用>编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑.系统.深入.详尽地讲解了C++11新标准中的新语言特性.新标准库特性.对原有特性的改进,以及所有这些新特性的应用. 作者简介 作者:(加拿大)Michael Wong IBM XL编译器中国开发团队 Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),W…
这是C++11新特性介绍的第五部分,涉及到智能指针的相关内容(shared_ptr, unique_ptr, weak_ptr). shared_ptr shared_ptr 基本用法 shared_ptr采用引用计数的方式管理所指向的对象.当有一个新的shared_ptr指向同一个对象时(复制shared_ptr等),引用计数加1.当shared_ptr离开作用域时,引用计数减1.当引用计数为0时,释放所管理的内存.       这样做的好处在于解放了程序员手动释放内存的压力.之前,为了处理程…
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 1.0 SPS 11 新特性   前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 1:SQL新特性更新2:System Views新特性更新3:Smart Data Access(好像针对IBM出的)4:Multistore tables新特性…
前言: 目前网上的c++线程池资源多是使用老版本或者使用系统接口实现,使用c++ 11新特性的不多,最近研究了一下,实现一个简单版本,可实现任意任意参数函数的调用以及获得返回值. 0 前置知识 首先介绍一下用到的c++新特性 可变参数模板:利用这一特性实现任意参数的传递 bind函数,lambda表达式: 用于将带参数的函数封装为不带形参和无返回值的函数,统一接口 forward: 完美转发,防止在函数封装绑定时改变形参的原始属性(引用,常量等属性) shared_ptr, unique_ptr…
破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性——初始化列表,概念就不说了,就讲下这东西具体怎么用吧,就是正常的写一个构造函数,然后把参数改为initializer_list<数据类型> &t 如图所示. 可以理解为传入的参数数据被放到了一个储存器t中,利用C++11的auto可以直接遍历这个储存器t,然后把遍历到的值给结构体用.这里…
从C++出来到现在已经13年了. Bjarne Stroustrup(C++的创造者)最近评价C++:”感觉像个新的语言“. 事实上,C++11核心已经发生了很重大的变化: . 支持Lambda表达式( lambda expressions) . 对象自动类型推导(automatic type deduction of objects) . 统一初始化语法(uniform initialization syntax) . 代理构造(delegating constructors) . delet…
前言 转载请注明出处,感谢! C++11 的新特性 1 变量和基本类型 1.1 long long 类型 扩展精度浮点数,10位有效数字 1.2 列表初始化 初始化的几种不同形式,其中用花括号来初始化变量称为列表初始化: 比如: int i = 0; int i = {0}; int i{0}; int i(0); 需要注意的是,当用于内置类型的变量时,这种初始化形式有一个重要的特点:如果我们使用初始化且初始值存在丢失信息的风险,则编译器报错: 例如: long double ld = 3.14…
1.类型与变量相关 1.1.nullptr: 取代了NULL,专用于空指针 1.2.constexpr: 近似const, 可以修饰变量,也可以修饰函数, 修饰变量如: const int global = 100; int main () { int temp = 100: constexpr int a = 1; //right constexpr int b = global; //right constexpr int c = temp; //wrong } 既可以赋值字面常量也可以赋值…
前言 这是我阅读<The C++ standard library, 2nd Edition>所做读书笔记的第一篇.这个系列基本上会以一章一篇的节奏来写,少数以C++03为主的章节会和其它章节合并,一些内容较多的章节也会抽出几个独立的章节.这些博文不分析具体的应用情景,仅仅用来记录C++11新增的知识点.关于C++11知识点的详细解析,请参考C++11 FAQ:关于C++03以及STL的较详尽解析,请参考相关著作或者网络资料:推荐<C++ Primer,4th edition>和&…
1. 引入nullptr的原因 引入nullptr的原因,这个要从NULL说起.对于C和C++程序员来说,一定不会对NULL感到陌生.但是C和C++中的NULL却不等价.NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro). 1.1 NULL在C中的定义 在C中,习惯将NULL定义为void*指针值0: #define NULL (void*)0 但同时,也允许将NULL定义为整常数0. 1.2 NULL在C++中的定义 在C++中,NULL却被明确定…
1.类型与变量相关 1.1.nullptr: 取代了NULL,专用于空指针 1.2.constexpr: 近似const, 可以修饰变量,也可以修饰函数, 修饰变量如: const int global = 100; int main () { int temp = 100: constexpr int a = 1; //right constexpr int b = global; //right constexpr int c = temp; //wrong } 既可以赋值字面常量也可以赋值…
声 明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的<The Biggest Changes in C++11(and Why You Should Care)>一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/ ). 注:作者 Danny Kal…
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外). C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto.decl…