• 【读书笔记】深入应用C++11代码优化与工业级应用 读书笔记01


    第一章 使用C++11让程序更简洁、更现代

    1.1  类型推导

    1.1.1  auto类型推导

    1、auto关键字的新意义

      不同于python等动态类型语言的运行时进行变量类型的推导,隐式类型定义的类型推导发生在编译期它的作用是让编译器自动推导出这个变量的类型,而不需要显示指定类型。

    下面是auto的一些基本用法:

    1 auto x = 5;                               //ok:x是int类型
    2 auto pi = new auto(1);                  //ok:pi被推导为int*
    3 const auto *v = &x, u = 6;                //ok:v是const int*类型,u是const int 类型
    4 static auto y = 0.0;                      //ok:y是double类型
    5 auto int r;                               //error:auto不再表示存储类型指示符
    6 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的结合使用

  • 相关阅读:
    LaunchScreen.storyboard 换了图片 不能更改过来 解决方案
    iOS Google 地图 集成详解
    Mac下 使用git clone 代码慢解决方案
    iOS 函数式编程
    iOS [self class] 、 [self superclass]、 [super class] 、[super superclass] 几种情况对比
    iOS 链式编程-Block 作为放回值
    iOS block的变量捕获(capture)
    iOS Block本质探究
    iOS 读写操作 处理 pthread_rwlock dispatch_barrier_async
    iOS atomic 和 nonatomic 区别
  • 原文地址:https://www.cnblogs.com/xuelisheng/p/10662846.html
Copyright © 2020-2023  润新知