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
操作符返回的是一个地址。参见后续笔记。 - 而最后行会报错,原因是数据类型必须要一样。
:-)