auto: 使用范围仅限于初始化,分别是赋值初始化和花括号初始化
auto tmpA = 10 * 20; // int
auto tmpB { 0 }; // int
auto tmpC = &tmpA; // int *
auto tmpD{ &tmpB }; // int *
注意: 在C++标准里,类的成员变量不允许使用自动类型推导机制
class MyClass
{
public:
explicit MyClass();
~MyClass();
public:
bool testOutput();
private:
auto m_index = 0; // 编译报错
mutable int m_count { 0 };
};
auto推导的类型都是值类型,而不是引用
auto可以加上const,volatile, *, &等修饰符,得到新的类型。
auto tmpA = 10; // auto推导为int, tmpA类型:int
auto& tmpB = tmpA; // auto推导为int, tmpB类型:int&
auto* tmpC = &tmpA; // auto推导为int, tmpC类型:int*
const auto& tmpD = tmpA; // auto推导为int, tmpD类型:const int&
auto tmpE = &tmpD; // auto推导为const int*, tmpE类型:const int*