文章内容发布于 652 天前;最后修改于 652 日前。其中的信息可能发生变化或产生更改,敬请留意。
11-1 存储类-auto
auto 声明是 c++98 新增的内容。这是让编译器自动根据初始值来判断数据类型。
在 c++11 中,使用auto声明变量时会根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
C++98标准中auto关键字用于自动变量的声明,但由于使用极少且多余,在 C++17 中已删除这一用法。
所以说尽量不要使用auto声明变量
比如说这样:(前提运行在 c++11 中)
auto a = 100;
auto b = 1.2;
auto s("hello");
auto z = new auto(9);
//auto x1 = 5, x2 = 5.0, x3='r';
在这里:
- 变量
a就会自动判断为一个int类型; - 变量
b就会自动判断为一个double类型; - 变量
s就会自动判断为一个const char*类型,原因是"hello"是一个常量字符,而string需要包含新的头文件。所以编译器会认为变量s是一个const char*。 - 变量
z就会自动判断为一个int*类型,因为new操作符返回的是一个地址。参见后续笔记。 - 而最后行会报错,原因是数据类型必须要一样。