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

天津河西做网站公司品牌seo培训

天津河西做网站公司,品牌seo培训,威海高新园区建设运营有限公司网站,代理公司注册机构引言 C11引入的auto关键字彻底改变了开发者处理类型的方式。通过自动类型推导,auto不仅减少了代码冗余,还提高了代码的可维护性和灵活性。本文将深入探讨auto的工作原理、使用场景及最佳实践。 一、auto的核心机制 1.1 基本语法 auto variable init…

引言

C++11引入的auto关键字彻底改变了开发者处理类型的方式。通过自动类型推导,auto不仅减少了代码冗余,还提高了代码的可维护性和灵活性。本文将深入探讨auto的工作原理、使用场景及最佳实践。

一、auto的核心机制

1.1 基本语法

auto variable = initializer;

编译器根据初始化表达式推导变量类型:

auto i = 42;        // int
auto d = 3.14;      // double
auto s = "hello";   // const char*
int a = 10,b = 11;
auto c = a + b; //c为int型

从上面的例子中,我们要总结一点:

auto通过初始化它的表达式来推断类型,也就是说,auto推导变量依赖于初始化它的表达式,并且auto声明的变量必须初始化。

1.2 类型推导规则

规则1:声明为auto(不是auto&)的变量,忽视掉初始化表达式的顶层const。即对有const的普通类型(int 、double等)忽视const,对常量指针(顶层const)变为普通指针,对指向常量(底层const)的常量指针(顶层cosnt)变为指向常量的指针(底层const)。


规则2:声明为auto&的变量,保持初始化表达式的顶层const或volatile 属性。


规则3:若希望auto推导的是顶层const,加上const,即const auto。

关于底层const和顶层const的问题,请参考这篇博客,感觉写的很透彻。

底层const顶层const到底是什么

值类型:忽略顶层const和引用

const int ci = 10;
auto a = ci;     // int(忽略const)
auto& b = ci;    // const int&

引用类型:保留底层const

int x = 20;
const int& rx = x;
auto c = rx;     // int
auto& d = rx;    // const int&

二、典型应用场景

2.1 简化迭代器声明

std::vector<std::unordered_map<int, std::string>> complexData;// 传统方式
for (std::vector<std::unordered_map<int, std::string>>::iterator it = complexData.begin();it != complexData.end(); ++it) { /*...*/ }// 使用auto
for (auto it = complexData.begin(); it != complexData.end(); ++it) { /*...*/ }

2.2 配合模板编程,用于声明依赖模板参数的变量

template <typename T, typename U>
auto add(T t, U u) -> decltype(t + u) {return t + u;
}auto result = add(3, 4.5);  // double

上面的例子是典型的尾置类型返回,这个要借助decltype来实现,我在下一篇文章中会介绍decltype的使用以及和auto的区别。 

2.3 处理复杂类型

auto lambda = [](int x) { return x * 2; };  // 推导lambda类型
std::function<int(int)> func = lambda;

三、注意事项与最佳实践

3.1 需要显式类型的情况

// 坏例子
auto result = getData();  // 类型不明确// 好例子
DataResult result = getData();  // 提高可读性


文章转载自:

http://ZWQdvjFf.sgrtf.cn
http://aALAmOBD.sgrtf.cn
http://pEY6cUAz.sgrtf.cn
http://NDdXflpK.sgrtf.cn
http://kX8gGFOG.sgrtf.cn
http://H0Dae7ZE.sgrtf.cn
http://otlfJ2WH.sgrtf.cn
http://ChGZuj0m.sgrtf.cn
http://wzTbOpuP.sgrtf.cn
http://OGNVoJ5E.sgrtf.cn
http://JJXPYiQW.sgrtf.cn
http://4aoYu2jm.sgrtf.cn
http://Sv7a1tTq.sgrtf.cn
http://60UU0PFR.sgrtf.cn
http://V6fMvl0L.sgrtf.cn
http://JZSRKKJD.sgrtf.cn
http://mQbSm3XV.sgrtf.cn
http://XkAjt7HL.sgrtf.cn
http://RvRDUFJP.sgrtf.cn
http://sDswJHEo.sgrtf.cn
http://UQk444dR.sgrtf.cn
http://EBXqBBxJ.sgrtf.cn
http://WAqqqckx.sgrtf.cn
http://CAGU34PT.sgrtf.cn
http://0uZpZhym.sgrtf.cn
http://o1Bk2i2c.sgrtf.cn
http://t1i02Snf.sgrtf.cn
http://2ynHXHlR.sgrtf.cn
http://v51yzsgV.sgrtf.cn
http://uJWapqwl.sgrtf.cn
http://www.dtcms.com/wzjs/664000.html

相关文章:

  • 网站做优化和推广哪个好dede网站模板
  • 建行赤峰市分行 - 欢迎访问中国建设银行网站专业网页制作软件能帮助客户组织和管理
  • 重庆 网站 建设 公司龙胜做网站的公司
  • 企业网站自助建上海南建设培训执业中心网站
  • 建设公司网站需要准备哪些材料广告创意设计论文
  • 所得税 网站建设费企业网站建设综合实训心得
  • 新民电子网站建设哪家好网站关键词免费优化
  • 怎么在搜狐快站上做网站网页设计页面大小
  • 网站建设怎么分析市场鄂尔多斯市建设厅网站
  • 阿里巴巴网站装修怎么做全屏大图南京网站设计公司兴田德润放心
  • aspcms园林绿化工程网站源码wordpress 发音
  • 做淘宝券网站硅谷主角刚开始做的是软件还是网站
  • 泰安网站制作公司电话深圳手机网站定制开发
  • 做网站公司属于什么行业软件技术方案
  • 网站开发公司怎么做账百度注册页面
  • 建立网站找什么公司中小企业名录库
  • 做网站业务的怎么寻找客户网站轮播动态图如何做
  • 50万做网站网站栏目设置完整度建设
  • 建设工程消防网站进入程序wordpress portfolio插件
  • 网站建设需求流程图cytoscape网站开发
  • 学做网站需要懂什么软件wordpress 中文用户
  • 做简单的网站首页企业如何在网站做认证
  • 公关网站建设深圳平面设计
  • 交做网站视频百度云订阅号申请
  • 网站建设特色网站更换域名备案吗
  • 用自己的电脑做网站套用别人产品图片做网站
  • 广州建设厅网站首页有后台的网站如何建设
  • wdcp创建网站怎么给自己做个网站吗
  • 三合一网站有必要吗株洲网站优化找哪家
  • 房地产集团网站欣赏做外贸没有网站需要什么条件