【读书笔记】深入应用C++11代码优化与工业级应用 读书笔记01
第一章 使用C++11让程序更简洁、更现代
1.1 类型推导
1.1.1 auto类型推导
1、auto关键字的新意义
不同于python等动态类型语言的运行时进行变量类型的推导,隐式类型定义的类型推导发生在编译期。它的作用是让编译器自动推导出这个变量的类型,而不需要显示指定类型。
下面是auto的一些基本用法:
auto x = ; //ok:x是int类型
auto pi = new auto(); //ok:pi被推导为int*
const auto *v = &x, u = ; //ok:v是const int*类型,u是const int 类型
static auto y = 0.0; //ok:y是double类型
auto int r; //error:auto不再表示存储类型指示符
auto s; //error:auto无法推导出s的类型
上面的代码中:字面量5是一个const int类型,变量x将被推导为int类型(const被丢弃,后面做说明),并被初始化为5;pi的推导说明auto还可以被用于new操作符;对于v和u的推导需要注意两点(1)虽然经过前面的const auto *v = &x的推导,auto的类型可以确定为int了,但是u仍然必须要写后面的“= 6”,否则编译将报错。(2)u的初始化不能编译器推导产生二义性。例如,把u的初始化改为“u = 6.0”,编译器将被会报错。
使用auto声明的变量必须马上初始化(或者已经初始化完了,如上面的引用),以让编译器推导出它的实际类型,并在编译时将auto占位符替换为真正的类型。
2、auto的推导规则
auto可以结合指针、引用一起来使用,还可以带上cv限定符(cv-qualifier、const和volatile限定符的统称)。下面再看一些例子:
1.1.2 decltype关键字
1.1.3 返回类型后置语法---auto和decltype的结合使用
【读书笔记】深入应用C++11代码优化与工业级应用 读书笔记01的更多相关文章
- PHP学习笔记 - 进阶篇(11)
PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...
- 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记
机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...
- 读书笔记 effective c++ Item 11 在operator=中处理自我赋值
1.自我赋值是如何发生的 当一个对象委派给自己的时候,自我赋值就会发生: class Widget { ... }; Widget w; ... w = w; // assignment to sel ...
- 《C专家编程》读书笔记之第8~11章
八.为什么程序员无法分清万圣节和圣诞节 1. 整形提升是指char,short int和位段类型(无论signed或unsigned)以及枚举类型将被提升为int或unsigned int(如果int ...
- Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作
(11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...
- 学习笔记之IKM C++ 11
https://github.com/haotang923/interview/tree/master/IKM Q1. If most of the calls to function foo() b ...
- C++学习笔记16,C++11中的显式的默认构造函数以及显示删除默认构造函数
在早期的C++中.假设须要一些接受一些參数的构造函数,同一时候须要一个不接收不论什么參数的默认构造函数.就必须显示地编写空的默认构造函数.比如: //tc.h class A{ private: in ...
- [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...
- 关于BenchMark/c++11计时器/Chrome:tracing 的一些笔记
A benchmark is a test of the performance of a computer system. 基准测试是对计算机系统的性能的测试 计时器 性能的指标就是时间,在c+ ...
随机推荐
- DRBD搭建
基于块设备在不同的高可用服务器之间同步和镜像数据的软件,块设备可以是磁盘分区,LVM逻辑卷或整块磁盘,解决磁盘单点故障 三种复制协议 (1)协议A:异步复制协议,本地写成功后立即返回,数据放在发送bu ...
- eclipse配置环境变量
下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 3.配置环境变量:右击“我的电脑”-->&quo ...
- 第三章 JQuery: HelloWorld--常见方法--css--选择器--筛选器--属性--效果--事件--数组操作--字符串操作--对象转换
1.jQuery简介 为了简化JavaScript 的开发, 一些JavsScript 库诞生了. JavaScript库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的页面, 并且兼 ...
- 二十一、springcloud(七)服务网关zuul
1.简介 Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,在微服务架构中,后端 ...
- 理解java回调机制
摘自:ImportNew 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类 ...
- CSRF的防御解决过程
CSRF是什么,就不多说,网络上的帖子多的去了,关于其定义. 这里主要介绍我们项目中,是如何解决这个问题的.方案比较简单,重点是介绍和记录一下遇到的问题和一些小的心得. 1. 解决方案 A. 用户登录 ...
- Linux中redis安装配置及使用详解
Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...
- 移植Valgrind检测Android JNI内存泄漏
1.相关工具 Valgrind:从Valgrind官网下载最新的源码包,我这里用的是:valgrind 3.14.0 (tar.bz2) [17MB] - 9 October 2018. Ubuntu ...
- python之路——13
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.函数 1.函数的定义和调用 2.参数及传递顺序 形参角度: 位置参数:*args:默认参数:**k ...
- [UE4]Scale Box:缩放容器
一.Scale Box只能有一个子控件,再拖放一控件进去是不行的. 二.Scale Box缩放保持长宽比例 三. Scale Box.Strectching.Strectch:拉伸设置. Scale ...