C++ auto用法

简介: 1.auto作用auto关键字能够自动识别变量类型。2. auto的原理auto定义的变量会在编译阶段根据右值来推出auto变量的类型。1.使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。2.因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。3.使用auto的细则3.1. auto与指针和引用结合起来使用

1.auto作用

auto关键字能够自动识别变量类型。

2. auto的原理

auto定义的变量会在编译阶段根据右值来推出auto变量的类型。

1.使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。

2.因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。

3.使用auto的细则

3.1. auto与指针和引用结合起来使用

int main()
{
  int a = 10;
  auto b = a;
  auto pa = &a;
  auto* pb = &a;
  auto& c = a;
  return 0;
}

b是auto类型,会根据a的类型推导b的类型。

pa是指针,因为auto修饰的pa会根据右值(&a)来推导出pa的类型。

auto pa = &a和 auto *pa = &a是一样的写法。只不过是:

auto *pa = &a规定pa必须是指针类型,不能是其他类型了。

auto *pa = 10;

这样的代码是错误的,auto* 规定了变量必须是指针类型。给一个10,10是一个字面量,默认是int类型。不符合规则。

3.2 在同一行定义多个变量

一行可以定义多个相同变量。

  auto a = 1, b = 3;

注意:一行的变量必须相同。

  auto c = 2, d = 3.14;

这样的代码就是错误的。

因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

3.3. auto不能作为函数的参数

因为编译器不能对形参的实际类型进行推导。

3.4auto不能作为数组的声明。

void TestAuto()
{
  int a[] = {1,2,3};
  auto b[] = {4,5,6};//错误
}

编译器不知道要开多大的空间。

相关文章
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
332 3
【C++】map、set基本用法
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
|
存储 安全 编译器
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(一)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
222 1
|
安全 程序员 编译器
C++ 11新特性之auto和decltype
C++ 11新特性之auto和decltype
182 3
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
存储 安全 编译器
C++入门 | auto关键字、范围for、指针空值nullptr
C++入门 | auto关键字、范围for、指针空值nullptr
309 4
|
存储 编译器 程序员
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(二)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
178 0
|
C++
C++ string中的函数和常用用法
C++ 中string中的函数和常用用法
305 4
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)