当前位置: 首页 > wzjs >正文

莆田网站建设创意上海比较有名的外贸公司

莆田网站建设创意,上海比较有名的外贸公司,wordpress做公司网站,欧普建站《Effective Modern C》第二章:auto 一、为何提倡使用 auto C11 引入 auto 关键字,让编译器根据初始化表达式自动推导变量类型。在以下场景中,auto 能简化代码、提升可维护性: 减少冗长类型:泛型库、迭代器、函数返回类…

《Effective Modern C++》第二章:auto

一、为何提倡使用 auto

C++11 引入 auto 关键字,让编译器根据初始化表达式自动推导变量类型。在以下场景中,auto 能简化代码、提升可维护性:

  1. 减少冗长类型:泛型库、迭代器、函数返回类型经常写出极长的类型声明,使用 auto 可大幅精简。
  2. 提高泛型代码可移植性:当底层容器或迭代器类型改变时,不必修改所有变量声明。
  3. 减少拷贝错误:在使用右值和移动语义时,autoauto&& 可避免意外拷贝。

然而,auto 并非万能,滥用可能导致类型意外退化或丢失 const/引用语义。因此,本章提出两条最佳实践。


二、Item 5:Prefer auto to explicit type declarations

1. 场景与收益

  • 复杂类型声明

    std::vector<std::pair<std::string, int>>::const_iterator it = myVec.cbegin();
    // 使用 auto
    auto it = myVec.cbegin();
    

    省去繁琐的模板参数书写,可读性更强。

  • 泛型算法结果

    auto result = std::find_if(container.begin(), container.end(),[](auto& elem){ return /*…*/; });
    

    避免因容器类型不同而调整代码。

2. 保持一致性与可读性

  • 局部变量循环迭代器lambda 捕获 中优先使用 auto
  • 对于 函数参数函数返回类型(未使用尾置返回的函数)、公有接口 等仍建议显式类型,以提高 API 清晰度。

3. 避免常见误区

  • 意外剥离 const 或引用

    const auto ci = someValue;    // ci 保留 const
    auto ci2 = someValue;         // 顶层 const 被剥离
    auto& r = someLvalue;         // 可保留引用
    

    如果需要保持 const 或引用语义,请显式加上 const/&

  • 数组与函数退化

    char arr[] = "Hello";
    auto ptr = arr;      // 推导为 char*
    auto& arrRef = arr;  // 推导为 char (&)[6]
    

    当需要保留数组维度,务必使用引用或标准容器。


三、Item 6:Use the explicitly typed initializer idiom when auto deduces undesired types

在某些情形下,auto 的推导结果并非我们所期望,此时可使用“显式类型 + 括号初始化”习惯用法。

1. 原则说明

  • 语法形式

    T var{initializer};
    

    T 明确指定目标类型,而非由 auto 推导。

  • 适用场景:当初始化表达式类型与目标类型不完全一致(如整数截断、精度丢失、符号变化、指针转换)时。

2. 案例解析

2.1 字面量与有符号/无符号整型
auto x1 = 3u;       // unsigned int
auto x2 = -1;       // int
// 若期望 x 为有符号 char
char x3{3u};        // OK,值在范围内
// 禁止隐式从 unsigned int 转换到 signed char
// char x4 = 300;   // 编译错误(防止溢出)
2.2 浮点兼容与精度控制
auto pi = 3.1415926;    // double
// 若期望 float 类型
float fpi{3.1415926f};  // 使用 f 后缀并显式指定 float
2.3 智能指针与容器
auto ptr = std::make_shared<Base>();   // ptr 类型 std::shared_ptr<Base>
// 若希望基于派生类类型
std::shared_ptr<Derived> dptr{std::make_shared<Derived>()};
2.4 容器填充与大小控制
auto arr = std::array<int, 5>{1,2,3,4,5};  // 明确 std::array 而非 C 风格数组

3. 为什么要这样做

  1. 避免意外窄化转换:使用大括号初始化可捕捉到窄化风险;
  2. 提高代码意图可见性:读者一眼即可知变量类型;
  3. 防止自动退化:显式类型可避免数组/函数退化或智能指针类型不匹配。

四、实践建议

  1. 优先在局部作用域使用 auto,让类型声明聚焦于表达式意图;

  2. 在不确定 auto 推导结果时,使用显式类型初始化,特别是对跨类型转换、大括号初始化场景;

  3. 配合静态断言,验证推导或显式初始化后的类型是否满足预期:

    static_assert(std::is_same<decltype(var), DesiredType>::value, "类型错误");
    
  4. 当初始化器本身类型已足够清晰,如 auto flag = true;,可直接使用 auto;当需要控制类型细节时,显式指定。


文章转载自:

http://gmsAAkeQ.tbbhc.cn
http://E3kS7jE4.tbbhc.cn
http://XTbhD6DV.tbbhc.cn
http://e9TlTSs7.tbbhc.cn
http://G4hpvikI.tbbhc.cn
http://9A2P1JTE.tbbhc.cn
http://p6LXmUh6.tbbhc.cn
http://LRBPPwI6.tbbhc.cn
http://JckplOKp.tbbhc.cn
http://JMDkB0H2.tbbhc.cn
http://584A2pL7.tbbhc.cn
http://15IWRowT.tbbhc.cn
http://iwvZUkQe.tbbhc.cn
http://oaRUHAwQ.tbbhc.cn
http://7huKqKBR.tbbhc.cn
http://vgrBuDGi.tbbhc.cn
http://jZrhDvpe.tbbhc.cn
http://WIYQGfU3.tbbhc.cn
http://6ImuZrd9.tbbhc.cn
http://YHXwqaFE.tbbhc.cn
http://mFgf8Vqp.tbbhc.cn
http://Rvxz4k2g.tbbhc.cn
http://rdJSFYaC.tbbhc.cn
http://TQkzqqNB.tbbhc.cn
http://ABLZZMu2.tbbhc.cn
http://WJRUBjrA.tbbhc.cn
http://nFR8AvGG.tbbhc.cn
http://emDgxtBb.tbbhc.cn
http://XCiWTh0l.tbbhc.cn
http://iclT61i4.tbbhc.cn
http://www.dtcms.com/wzjs/660350.html

相关文章:

  • 塑胶东莞网站建设技术支持灌云网站建设
  • 深圳旅游公司网站龙采网站建设
  • 网站刷链接怎么做的怀来网站建设
  • eclipse与jsp网站开发西安网站seo 优帮云
  • 网站备案是不是就是空间备案ppt免费模板下载网站有哪些
  • 社交网站 设计科技公司网页图片
  • 企业网站怎么优化销售管理系统业务流程图
  • php企业网站开发教程商标注册网上申请流程25个步骤
  • 做网站卖什么软件设计类专业需要美术功底吗
  • 如何建设万网网站北京学设计去哪个网站
  • 自己做网站页面用php做网站教程
  • 济南高端网站制作公司有专业做淘宝网站的美工吗
  • 建宁建设局网站服务器建站教程
  • 网站的优化 优帮云沙洋网页定制
  • 番禺哪里有做网站的公司平面设计师求职网
  • php网站开发招聘需求企业网站方案
  • 江苏专业做网站的公司wordpress主题域名授权密钥生成
  • 江北网站建设价格wordpress 双主题
  • 提高网站浏览量discuz论坛官网
  • 培训类网站建设门店管理系统免费版
  • 网站建设的公司地址怎么向搜索引擎提交网站
  • 做购物网站收费微信分销系统价格
  • 邻水县规划和建设局 网站市政建设招标网站有哪些
  • 中国住房和城乡建设部网站6门户网站制作的公司
  • 怎样在阿里巴巴上做网站合界科技网站建设
  • 网站建设 高端 北京wordpress在国内很慢
  • 做网站哪个比较好四川省住房建设厅网站
  • 网站优化知识资讯公司管理系统软件
  • 网站开发汇报php 网站后台管理系统
  • 通州区建设局网站宁波网站商城建设