第2.10章: auto

English

什么是 auto?

auto 关键字告诉编译器从初始化器推导对象的类型。 你不必显式写出类型,而是让编译器自行推断。

基础示例


#include <cstddef>

auto a{42zu};       // deduced as ::std::size_t
auto b{3.14};       // deduced as double
auto c{'x'};        // deduced as char
auto d{true};       // deduced as bool

每个对象都用字面量初始化,编译器会自动推导出正确的类型。

为什么使用 auto?

局限

配合 auto 的引用


#include <cstddef>

::std::size_t x{100zu};

auto r1{x};        // deduced as ::std::size_t (copy)
auto& r2{x};       // deduced as ::std::size_t& (reference)
auto const& r3{x}; // deduced as ::std::size_t const& (const reference)

添加 & 或 const& 会把推导结果变为引用类型。

要点