c++中的auto

    int a = 10;
    auto au_a = a;//自动类型推断,au_a为int类型
    cout << typeid(au_a).name() << endl;  //会输出int类型

性质
1、 auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype
2、 auto的自动类型推断发生在编译期,所以使用auto并不会造成程序运行时效率的降低
3、与其他变量区别:
1、auto声明的变量必须要初始化,否则编译器不能判断变量的类型。
2、auto不能被声明为返回值,auto不能作为形参,auto不能被修饰为模板参数
注意
1、auto 变量必须在定义时初始化,这类似于const关键字。
2、auto变量必须始终为定义后的那种类型
3、几个去掉语义情况

引用

int a = 10;
int &b = a;//b是a的别名
auto c = b; //此时c为int类型
auto &d = b;//此时d的类型才为int&

如果初始化表达式为const或volatile(或者两者兼有),则除去const/volatile语义。
如果auto关键字带上&号,则不去除const语意。

string s( “hello world” );
for (auto c:s)
c= ‘t’ ;
cout<<s<<endl; //结果为hello world
for (auto &c:s)
c= ‘t’ ;
cout<<s<<endl; //结果为ttttttttttt

初始化表达式为数组时,auto关键字推导类型为指针。
		若表达式为数组且auto带上&,则推导类型为数组类型。`


auto常与for结合使用:
for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。
for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充,但一般都是用for(auto &&x:range)
       想要拷贝元素:for(auto x:range)
       想要修改元素 :  for(auto &&x:range)
       想要只读元素:for(const auto& x:range)                                                                                                                                                                                                                                            
例子

```cpp
const int a1 = 10;
auto  b1= a1; //b1的类型为int而非const int(去除const)
const auto c1 = a1;//此时c1的类型为const int
b1 = 100;//合法
c1 = 100;//非法
const int a2 = 10;
auto &b2 = a2;//因为auto带上&,故不去除const,b2类型为const int
b2 = 10; //非法
```cpp
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪睡的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值