美文网首页
[C++11阅读][3-2-2]auto类型推导(中)

[C++11阅读][3-2-2]auto类型推导(中)

作者: 凌霄阁2010 | 来源:发表于2020-06-25 12:12 被阅读0次

auto的优势

第一点,显而易见,就是方便写,尤其是模板套模板、名字空间套名字空间的变量,展现出来比Java的优越性了。
第二点,可以避免一些类型声明时的错误,比如使用了库中的某变量PI,不知道这个变量是什么类型的,也可能在不同硬件中类型不一样,auto可以适配多种类型,例如下面的例子。

class PI {
public:
    double operator* (float v) {
        return (double)val * v;
    }
    const float val = 3.1415927f;
};
int main() {
    float radius = 1.7e10;
    PI pi;
    auto circumference = 2 * (pi * radius);
}

第三点,其“自适应”性能够一定程度上支持泛型编程。还是上面的例子,如果operator返回值类型变了,main函数不需要进行修改就能适配。下面的程序,不用管a和b的类型是什么,都可以进行适配。Max2相比Max1的好处是只计算了一次连加和连乘。

#define Max1(a,b) ((a) > (b))? (a) : (b)

#define Max2(a,b) ({ \
    auto _a = a; \
    auto _b = b; \
    (_a > _b)? _a : _b;})

int main() {
    int m1 = Max1(1*2*3*4, 5+6+7+8);
    int m2 = Max2(1*2*3*4, 5+6+7+8);
}

相关文章

  • [C++11阅读][3-2-2]auto类型推导(中)

    auto的优势 第一点,显而易见,就是方便写,尤其是模板套模板、名字空间套名字空间的变量,展现出来比Java的优越...

  • auto类型推导与const

    auto类型推导规则 C++11中新增了使用auto进行自动类型推断的功能,从此使用容器等复杂类型时,可以简化代码...

  • C++11的类型推导详解

    auto & decltype 关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decl...

  • [C++从入门到放弃] 通过使用auto完成类型自动推导以及Ra

    一、以auto完成类型自动推导 1、auto的使用场景 在C++11中允许声明一个变量或者对象(object)而不...

  • C++11带来的优雅语法

    自动类型推导 auto auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推...

  • C++11中auto和decltype

    C++11中auto和decltype auto和decltype都是C++11中引进来用于自动推断类型的关键字,...

  • 模板类型推导与auto

    本文聊聊C++中的模板类型推导和auto。两者其实是一样的,前者推导T的类型,后者推导auto的类型。本文初创于公...

  • C++11的auto类型推导

    《EffectiveModernCpp》这本书的关于auto结合const使用的部分内容写得不好,一些坑没有写清楚...

  • C++11类型推导

    C++11 重新定义了auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型。 au...

  • Item 1Understand template type d

    引子 模板类型推导是Modern C++特性auto的基础,但模板类型推导和auto类型推导有一些区别,具体看正文...

网友评论

      本文标题:[C++11阅读][3-2-2]auto类型推导(中)

      本文链接:https://www.haomeiwen.com/subject/snlkfktx.html