首页 >后端开发 >C++ >C 11 的'auto”关键字是否被过度使用:何时应避免显式键入?

C 11 的'auto”关键字是否被过度使用:何时应避免显式键入?

Susan Sarandon
Susan Sarandon原创
2024-12-08 20:11:10409浏览

Is C  11's `auto` Keyword Overused: When Should You Avoid Explicit Typing?

C 11 的 Auto 关键字是否过度杀伤力?

虽然 auto 关键字在处理复杂模板类型方面已被证明是无价的,正如其设计者所希望的那样,人们担心它在更简单的场景中被过度使用。是否应该使用 auto 来避免显式声明类型,即使对于像 std::make_shared() 这样的简单表达式也是如此?

预期用途和实践指南

根据C 标准委员会认为,当明确说明类型具有挑战性但右侧的类型很明显时,应使用 auto。例如,考虑以下代码:

my_multi_type::nth_index<2>::type::key_type::composite_key_type::
    key_extractor_tuple::tail_type::head_type::result_type

检索 boost::multi_index 中的复合键类型需要这个复杂的表达式。即使类型已知为 int,在这种情况下也应该使用 auto 来增强可读性。

推荐用例

在以下情况下使用 auto:

  • 读者可以轻松推断出 auto 所代表的类型。
  • 类型在
  • 它提高了可读性并防止不必要的重复。

示例

  • 使用 auto in std::make_shared() 是合适的,因为类型是显然。
  • 在表达式 bla() 中,其中 bla() 返回一个shared_ptr,使用 auto 是不清楚的,因为 foo 的类型不确定。
  • 在循环中使用 auto,其中已知迭代器类型但不知道具体迭代器,如 auto it = v.begin();,可以增强代码

警示故事

  • 明确指定类型有助于文档和健全性检查。
  • 使用 auto 时要小心for 循环使用无符号变量,因为它可能会导致意外的结果错误。

以上是C 11 的'auto”关键字是否被过度使用:何时应避免显式键入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn