C++ auto

关键字auto

auto是C++11新引入的关键字,用于自动推导变量类型。

使用auto声明变量时,编译器会根据初始化的值来推导变量的类型。

例如,以下代码声明了一个变量x,并将其初始化为10,编译器会根据初始值10的类型(int)来推导出x的类型也是int。

auto x = 10;

使用auto声明变量时,可以省略变量类型,让编译器自动推导。

例如,以下代码声明了一个变量y,并将其初始化为字符串"hello",编译器会根据初始值"hello"的类型(const char*)来推导出y的类型也是const char*。

auto y = "hello";

auto关键字还可以用于函数的返回值类型,让编译器自动推导出返回值的类型。

例如,以下代码定义了一个函数add,该函数接收两个整数参数,并返回它们的和。编译器会根据返回值的类型(int)来推导出add的返回值类型也是int。

auto add(int a, int b) {
    return a + b;
}

使用auto关键字还可以用于函数的参数类型,让编译器自动推导出参数的类型。

例如,以下代码定义了一个函数print,该函数接收一个整数参数,并打印出该整数。编译器会根据参数的类型(int)来推导出print的参数类型也是int。

void print(auto x) {
    std::cout << x << std::endl;
}

需要注意的是,auto关键字只能用于声明变量,不能用于声明常量。如果需要声明常量,可以使用关键字const。

例如,以下代码声明了一个常量x,并将其初始化为10。编译器会根据初始值10的类型(int)来推导出x的类型也是int,并且x的值不能被修改。

const auto x = 10;

使用auto关键字还可以用于声明指针。例如,以下代码声明了一个指针p,并将其初始化为一个整数数组。编译器会根据初始值数组的类型(int*)来推导出p的类型也是int*。

auto p = new int[10];

需要注意的是,auto关键字只能用于声明变量,不能用于声明引用。如果需要声明引用,可以使用关键字引用。

例如,以下代码声明了一个引用r,并将其初始化为一个整数数组。编译器会根据初始值数组的类型(int&)来推导出r的类型也是int&。

auto& r = p;

还有就是auto可以用于Range-Based循环。

例如

for(auto& i : vec) {
    std::cout << i << std::endl;
}

对比正常的循环。

for(std::vector<int>::iterator itr = vec.begin(); itr != vec.end(); itr++) {
    std::cout << *itr << std::endl;
}

可以看到也是简便了许多。

总结

auto关键字是C++11新引入的关键字,用于自动推导变量类型。使用auto关键字可以简化代码,提高代码可读性。

需要注意的是,auto关键字只能用于声明变量,不能用于声明常量、指针和引用。如果需要声明常量、指针和引用,可以使用关键字const、指针和引用。

使用auto关键字还可以用于Range-Based循环。


参考

C++ auto用法及应用详解

C++11新特性之基本范围的For循环(range-based-for)

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值