4. auto 自动类型推断
在 C++11 的标准中,原有的 C 语言的关键字 auto 已经放弃了自动存储期的变量的含义,该关键字重新定义为自动类型推断的关键字。
在 C++11 标准中 auto 关键字是类型占位符,用于自动推断类型。当书写的类型名称比较复杂且经常变化时,可以使用 auto 代表其类型,该类型会根据此变量的初始值的类型自动推断得出。
语法
auto 变量名 = 表达式;
说明
- auto 关键字定义的变量必须赋初始值。
- auto 类型的变量会自动丢弃 const 属性和 引用 属性,如果需要此属性则需要手动添加。
- C++11/14/17 标准中,不允许
auto关键字来声明函数形参的数据类型。
示例
#include <iostream>
using namespace std;
int main(int argc, char * argv[]) {
const int x = 100;
const int &rx = x;
auto pi = 3.14; // auto 推断为 double 类型
auto i = 200; // auto 推断为int 类型
auto b = true; // b 的类型是 bool
auto str = "hello"; // str 的类型是 const char*
auto ax = x; // auto 推断为int类型,丢弃const属性
auto ay = rx; // auto 推断为int类型,丢弃const和引用属性
const auto cx = rx; // auto 推断为int类型,cx 为 const int 类型
const auto &crx = rx; // crx 为 const int &类型
return 0;
}
实验
尝试使用 auto 关键字来定义数据类型。