zoukankan      html  css  js  c++  java
  • C++11 之auto

    在那些情况下要申明类型
    定义变量类型
    函数返回值,函数参数
    表达式返回变量类型

    auto关键字原理
         在定义变量的时候必须申明类型,c++是强语言类型,在编译阶段需要知道类型,这样的好处是程序效率更高,而动态语言不需要类型申明的需要自推导变量类型。使用了auto是不是c++效率会变慢?完全不是,因为在编译阶段编译器已经帮程序员推导好了变量的类型。前提条件是编译器可以根据当前的程序的状态推导出变量类型。只是编译器更加智能,我猜想编译时间岂不更长了。

    auto关键字使用场景

    场景一,申明普通变量

    auto num = 10; 

    场景二,函数返回值,如果没有auto,总是要巧那么长的返回值,有了auto关键字后,是不是心里感觉很爽。

    vector<string> str_vec;
    vector<string>::iterator it_old = str_vec.begin();
    auto it_new  = str_vec.begin();

    场景三,申明函数返回值
    auto add(int a, int b)->int {
         return a + b;
    }

    auto使用需要注意的几个问题
    1、使用auto关键字的变量必须有初始值,编译器才能推导出变量类型。

    2、在传递const变量的时候,使用auto必须自己加const

    const int a =10;
    auto b = a;                // b的类型是int
    const auto c = a;      // c 的类型是const int

    3、关于很奇葩的函数返回值
    auto关键字只能在函数的返回值使用auto关键字,并且在函数尾还需要标注返回类型
    这样看起来很奇葩,莫不如不用auto关键字,但我认为委员会的人没这么闲,上google查了下,有下面两条原因:
    1、他们认为把返回值放在函数后面更好看(特别是返回值很长的时候)
    2、C++14将会把讨人烦得返回值去掉,编译器直接支持自推导。
  • 相关阅读:
    c--日期和时间函数
    笔试题:360找镇长的题。
    【JavaScript】BOM和DOM
    也谈在 .NET 平台上使用 Scala 语言(续)
    生成n个元素的全排列 C实现
    jsp安全性问题
    stm32DMA通道 ADC通道
    POJ 1860
    Codeforces Round #FF (Div. 2) A. DZY Loves Hash
    Configure the modules to be find by modprobe
  • 原文地址:https://www.cnblogs.com/fengju/p/6174300.html
Copyright © 2011-2022 走看看