帮助中心 > 新闻资讯 >C++ 写个游戏引擎—(基础篇)10

C++ 写个游戏引擎—(基础篇)10

发布时间:2019-01-15

今天说一说关键 auto 的用法

auto 这种用法就类似于C# 中的 var 关键字。auto的自动类型推断发生在编译期,所以使用 auto 并不会造成程序运行时效率的降低。auto 有好的一面也有不好的一面。今天我们也讨论一下 auto 这个关键字的运用。

我们从一个简单示例来看一看。

我们用关键字 auto 代替 int 声明类型 , 这时查看一下 b 发现类型也是 int。

接下来如果我们把 a 前面的 int 也修改为 auto 看看会是什么样。

将 a 变量的值修改为 5L 呢。a 变量类型也会随之改变。更多的类型大家可以自己试一试。说明使用 auto 声明变量类型时,我们不必在乎变量的类型,编译会根据变量的值来判断变量的类型。

假设 GetName 是提供 API,那么用 auto 声明的变量 author 接受 GetName 返回值时,如果 GetName 返回类型变了,author 的类型也会自动随之变化。这就是 auto 的好处。

在强类型语言中似乎 auto 违背了强类型语言的基本原则。个人在这里不推荐使用 auto,大多情况我们需要知道变量的类型。

不过我们这里通过两个示例来演示一下在实际开发中 auto 的用途。

第一个示例,我们用 auto 代替 std::vector<std::string> 这样长长繁琐的变量类型声明,简洁了代码,降低开发体力,呵呵。这里出现一些代码,可能对于初学者还没接触到,没关系,这里我们只需关注 auto 的用法,以后会给大家介绍。

第二个示例,相对复杂一些,目的类似都是说明用 auto 来代替长长变量类型声明。

我们可以用 using(随后会介绍)声明 DeviceMap = std::unordered_map<std::string, std::vector<Device*>> 来简化代码,更简单的是用 auto 来直接替换 std::unordered_map<std::string, std::vector<Device*>>  类型。

相关推荐