
▲ C++11新特性
文章平均质量分 71
lambda、auto、decltype、delete、default等等。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
内核之道
某大厂资深技术专家,精通PostgreSQL内核、专注于『NVR、AI超脑、智能应用服务器、Postgres内核』开发
展开
-
【001】C++11允许匿名类型、局部类型作为模板实参
文章目录1. C++98 不允许匿名类型、局部类型作为模板实参2. C++11 支持匿名、句柄类型作模板实参1. C++98 不允许匿名类型、局部类型作为模板实参在C++98中,匿名类型(或变量)、局部类型(或变量)是不能够作为模板实参的,任何尝试这样的操作,编译器都会报错。比如我当前的Ubuntu环境上面的g++编译器版本是4.6.3,是不支持C++11新特性的。现在用一个示例来演示使用句柄类型、匿名类型作用模板实参的编译情况:#include <iostream>using n原创 2022-03-23 21:03:18 · 1099 阅读 · 0 评论 -
C++11之using定义变量和模板别名
文章目录1. C/C++98 定义别名2. C++11使用using定义别名2.1 定义变量别名2.2 定义函数指针别名3. using和typedef的差异1. C/C++98 定义别名 在C/C++98中,为一个变量或是函数定义别名,首先想到的是typedef关键字,它并非定义了一种新的类型,仅仅是为其定义了一个别名而已。经常在结构体、共用体、联合体中使用typedef,比如:typedef struct A{ int a; char c;}A;或typedef原创 2021-01-25 15:23:49 · 1444 阅读 · 0 评论 -
C++11之final详解
文章目录1. final关键字1.1 final修饰类1. final关键字 final是C++11中新引入的一个关键字,它可以应用于类或是成员函数(方法)。当应用于类的时候,它表明该类不允许派生,不允许其他类从final修饰的类进行继承。当用于成员函数(方法)时,可以防止修饰的成员函数被派生类重写、覆盖(但是,创建之类是允许的)。1.1 final修饰类 任何尝试从一个被final修饰的类中进行继承的操作,编译器都将检测到并给予错误提示。如下例所示:#include <io原创 2021-01-15 16:52:26 · 1697 阅读 · 0 评论 -
C++11之继承构造函数
文章目录1. 派生类无法继承基类构造函数1.1 using 关键字1.1.1 using 声明的使用1.1.2 using 声明示例1.1.2.1 将特定成员引入当前作用域1.1.2.2 将std 所有成员引入当前作用域1.1.2.3 将基类成员函数引入当前作用域1.1.3 using 声明使用范围2. C++11使用using来继承基类构造函数3. 继承构造函数可能遇到的问题1. 派生类无法继承基类构造函数 当类B继承于类A的时候,它会继承类A中的数据成员与普通成员函数。但是某些成员函数是无原创 2021-01-12 18:01:11 · 278 阅读 · 0 评论 -
C++11 委托构造函数(delegating constructor)
文章目录1. 委托构造函数2.3.4.1. 委托构造函数 委托构造函数(delegating constructor) 是C++11中新引入的一个新特性. 它是对C++98版本中的构造函数的一个改进. 所谓"委托构造函数", 就是使用它所归属类的其他构造函数来执行它自己的初始化操作. 换言之, 就是它把自身需要做的一些初始化操作任务交付给了其他的构造函数来完成. 为了让上述的描述更加通俗易懂, 不妨结合下图来理解C++11中的委托构造函数新特性的功能. 如图1, 班主任要求A、B、C原创 2020-07-21 17:34:31 · 909 阅读 · 0 评论 -
C++11之非受限制联合体(Unrestricted Union)
文章目录1. 联合体union回顾2. 联合体union的成员3.4.1. 联合体union回顾2. 联合体union的成员3.4.原创 2020-05-29 19:21:36 · 670 阅读 · 0 评论 -
C++11之防止类型收窄
文章目录1. 类型收窄2. 避免类型收窄3.1. 类型收窄 C/C++语言自身提供了许多的基本数据类型, 通常情况下, 我们总是应该使用恰当的数据类型来定义相对应的变量. 除了变量名尽量起到见名知义外, 还应当使用与所定义数据类型相匹配的正确数值来初始化变量. 当然, 这是理想(正确)情况下, 某些时候, 处于疏忽或是不经意间的转换, 会将给定数值初始化给一个与之不匹配的数据类型. 这种情况下, 就会发生类型收窄问题. 所谓类型收窄, “即数值产生了精度损失”. 如下: float f =原创 2020-05-26 17:58:31 · 661 阅读 · 0 评论 -
c++11之静态断言(static_assert)
一、 断言概念 所谓“断言”,它是一种表现行为,亦是一种编程手段。它总是将需要“返回值为真的判别式”放到语句中,其所扮演的角色就是告知系统当程序的某个条件其值不为真的时候,退出程序,不再继续执行下去。需要知晓的是,断言并不是代码中必不可缺的部分,因为它是可替代的,比如用if(条件判断)、#error(预处理宏)来完成断言同样的效果。存在即合理,断言必然有它存在理由。它可以快速定位到程序出...原创 2019-08-19 15:05:23 · 3918 阅读 · 0 评论 -
C++11之decltype
1. 在 [auto自动类型推导] 章节中讲解了auto的使用,本文将讲述与其功能相同即具有类型推导作用的 decltype 。示例1 推导普通的数据类型 int i = 0; float j = 1.0; double k = 2.0; decltype(i) m = 6.0; decltype(i+k) n = 5.2; ...原创 2019-03-08 14:24:30 · 3397 阅读 · 0 评论 -
C++11之std::function
一. std::function 概述std::function 是一种通用的多态函数包装器 。std::function 的实例可以存储、复制和调用任何可调用的目标——函数、lambda表达式、绑定表达式或其他函数对象,以及指向成员函数的指针和指向数据成员的指针。 存储的可调用对象 称为 std::function 的目标。如果一个std::function 不包含目标,它就被称为空。...原创 2018-12-04 00:15:53 · 9823 阅读 · 0 评论 -
C++11之列表初始化
1. 在C++98中,标准允许使用花括号{}来对数组元素进行统一的集合(列表)初始化操作,如:int buf[] = {0};int arr[] = {1,2,3,4,5,6,7,8}; 可是对于自定义的类型,却是无法这样去初始化的,比如STL标准模板库中容器,使用的频率非常之高,如vector,若要初始化其内容,则需要每次进行push_back 或使用迭代器去初始化,这是极其不便的。C++11 ...原创 2018-09-09 23:36:07 · 11057 阅读 · 0 评论 -
非静态成员sizeof
目录1.sizeof描述2. c++98中,对非静态成员变量使用sizeof是不能够通过编译的1.sizeof描述和strlen不一样,在c中strlen是一个字符串函数;用来求字符串的实际长度,不包含‘\0’`; 示例1:/***********************************************************...原创 2018-04-17 23:31:41 · 314 阅读 · 0 评论 -
C++11之基于范围的for循环
目录1.基于范围的for循环1.1 C++11新特性 基于范围的for循环2.基于范围的for循环特点1 .基于范围的for循环1.1 C++11新特性 基于范围的for循环1 .基于范围的for循环在c++98中,若要访问一个数组中的数据元素,则需采用循环和下标的方式输出数组中的内容。 如:/**************************************原创 2018-04-17 02:04:02 · 6503 阅读 · 7 评论 -
g++/gcc 支持c++11/c11标准
目录1.在linux采用c++11新特性编写的代码用g++编译时候,默认是不支持的2.使用-std=c11来让gcc支持c11新特性1.在linux采用c++11新特性编写的代码用g++编译时候,默认是不支持的编译时候会提示不支持c++11的提示。比如下面提示:newFeature.cpp:14:41: error: in C++98 ...原创 2018-04-24 00:21:10 · 6200 阅读 · 0 评论 -
c++11新特性之列表初始化
目录1.初始化列表2.初始化类别{}并不是专属于内置类型、数组以及标准模板库中容器的功能,可以初始化自定义类3.函数的参数列表也同样可以使用初始化列表1.初始化列表在c++98中,标准允许使用{}花括号来对数组元素进行统一的集合(集合)初始值设定。如:char arr[10] = {0}; //数组中10个元素值为0c...原创 2018-04-24 02:05:26 · 1428 阅读 · 0 评论 -
C++11之强枚举类型
目录1. 枚举定义回顾2. c++98中枚举存在缺陷缺陷(1)缺陷(2)3. c++11强enum类型3.1 强类型的枚举优点4 . c++11对enum类型进行了扩展5 . c++11中匿名的强类型枚举1. 枚举定义回顾枚举类型是c/c++中的一个基本内置类型,从枚举的本意来说:就是定义一个类别,并且穷举同一类别下的个体以供代码中去使用...原创 2018-04-29 00:21:32 · 3418 阅读 · 0 评论 -
C++11 之 lambda函数的详细使用
1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。通常情况下,lambda函数的语法定义为: [capture] (parameters) mutable -&amp;amp;amp;amp;gt;return-type {statement} 其中: [capture] :捕捉列表。捕捉列表总是作为lambda的开始,即出现于lambda的...原创 2018-07-03 22:38:42 · 40570 阅读 · 13 评论 -
C++11新特性之 “=default” 、“=delete”
1、 =default 和=delete 概述 任何事物的出现都必然有着其出现的理由,伴随着每一个新的概念产生都会带来一系列的便利和价值。C++在不断的演变与发展,与此同时,伴随着许多新的特性和功能产生。=default、=delete 是C++11的新特性,分别为:显式缺省(告知编译器生成函数默认的缺省版本)和显式删除(告知编译器不生成函数默认的缺省版本)。C++11中引进这两种新特性的目的是...原创 2018-07-18 00:03:42 · 30571 阅读 · 21 评论 -
C++11之尾置返回类型
一、 尾置返回类型概述 C++11中引入了 尾置返回类型(trailing return type)。见名知意,所谓的“尾置类型”就是将函数的返回值类型 尾值,即放在函数的参数列表 后面。其基本形式为:在形参列表后面并以一个-&gt;符号开始。二、 尾置返回类型的特点 (1)任何函数的定义都能够使用尾置返回 (2)对于函数的返回类型比较复杂的更为有效 (3)使代码更加直观和简洁 (4...原创 2018-07-12 13:29:45 · 2196 阅读 · 0 评论 -
C++11之快速初始化成员变量
color=#00ffff 1. C++98中支持所谓的“就地声明”的方式。所谓就地声明就是指 在类的声明中使用 等号 “=” 来初始化静态成员常量。但是在类中直接使用等号“=”来声明变量时,其要求是比较苛刻的。它必须满足2个条件,否则,编译失败。(1)类中的该静态成员变量需要满足“常量性”,如果不满足静态变量常量性,则不可以进行就地声明。 (2)在(1)的基础上,还需要满足该静态常量成员...原创 2018-09-09 17:00:59 · 6823 阅读 · 2 评论 -
auto自动类型推导
目录1.编程语言分类中,常有两种类型,分别是动态类型和静态类型2.动态类型与静态类型的主要区别3.c++11中的auto新特性4. 自动推导类型auto的使用限制1.编程语言分类中,常有两种类型,分别是动态类型和静态类型c\c++语言是属于静态类型,因为采用c\c++语言来进行开发的时候,都是采用先定义,后调用的形式;比如,给一个变量初始化,...原创 2018-04-18 00:40:23 · 1427 阅读 · 0 评论