zoukankan      html  css  js  c++  java
  • C++11 AUTO 类型实践

    auto在C++11中引入,为大家带来方便。

    具体使用及注意事项参考:

    https://blog.csdn.net/xiaoquantouer/article/details/51647865

    https://www.cnblogs.com/lenmom/p/7988635.html

    用法:

    一是在变量声明时根据初始化表达式自动推断该变量的类型。适用于类型冗长复杂,模板类型等

    二是在声明函数时作为函数返回值的占位符

    注意事项:

    1.使用auto关键字的变量必须有初始值。类似引用

    2.函数参数和模板参数不能被声明为auto。

    3.使用auto关键字声明变量的类型,不能自动推导出顶层的CV-qualifiers和引用类型,除非显示声明

    使用auto关键字进行类型推导时,如果初始化表达式是引用类型,编译器会去除引用,除非显示声明

    使用auto使用auto关键字进行类型推导时,编译器会自动忽略顶层const,除非显示声明

    详见例子

    int main()
    {
        auto fnum = 3.14;
        auto str("hello");
        cout << "fnum type:" << typeid(fnum).name() << endl;
        cout << "str type:" << typeid(str).name() << endl;
    
        vector<int> vec;
        auto v_it = vec.begin();
        cout << "v_it type:" << typeid(v_it).name() << endl;
    
        int int_ori = 5;
        int &ori_b = int_ori;
        auto a = ori_b;
        a = 10;
        cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a << endl;
        auto &b = ori_b;
        b = 20;
        cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a <<" b: " << b <<endl;
        
        const int cint_a = 100;
        auto a2 = cint_a;
        auto const a3 = cint_a;
        cout << "a2 type:" << typeid(a2).name() << " a3 type: " << typeid(a3).name() << endl;
    
        system("pause");
        return 0;
    }

    说明:

    auto &b显示声明了引用,所以改变了原始值。但 a 并非引用只是被赋值的独立变量,因此未被b修改

    最后的变量 a3是 const int 型如修改值会报错,而a2是 int 型可以修改

  • 相关阅读:
    BOT、BT、PPP形式介绍(3)
    BOT、BT、PPP形式介绍(2)
    BOT、BT、PPP形式介绍(1)
    Linux系统下C++开发工具-远程终端软件使用
    Linux开发工具的使用
    libjingle开发人员指南
    优雅处理段错误
    捕捉段错误信号信号处理程序
    段错误bug的调试
    docker核心概念(镜像、容器、仓库)及基本操作
  • 原文地址:https://www.cnblogs.com/chenzhefan/p/9357413.html
Copyright © 2011-2022 走看看