C++11 AUTO 类型实践

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

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

用法:

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

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

注意事项:

  • 使用auto关键字的变量必须有初始值。类似引用
  • 函数参数和模板参数不能被声明为auto。
  • 使用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 型可以修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值