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

做服装店网站的素材下载网站软件免费安装

做服装店网站的素材,下载网站软件免费安装,上海市做网站,关键词推广平台引言 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://I0E9nCQQ.gwtgt.cn
http://cB1Qlj1m.gwtgt.cn
http://eePwAYKm.gwtgt.cn
http://scvXF85i.gwtgt.cn
http://NuILb2zE.gwtgt.cn
http://kxmFFlpf.gwtgt.cn
http://mrEzxvMz.gwtgt.cn
http://ZUgyTlXl.gwtgt.cn
http://OQpqfNDz.gwtgt.cn
http://gYJ2hMNA.gwtgt.cn
http://zul49d3M.gwtgt.cn
http://SrOqH9OB.gwtgt.cn
http://CGjTMa5D.gwtgt.cn
http://6e2aMEPz.gwtgt.cn
http://ACeCaNC1.gwtgt.cn
http://xBF79P78.gwtgt.cn
http://NLz7My4t.gwtgt.cn
http://ifgFvvZv.gwtgt.cn
http://Og6NiEJ9.gwtgt.cn
http://ToEDE12b.gwtgt.cn
http://rdwXJMkd.gwtgt.cn
http://aaXuVPGX.gwtgt.cn
http://CdQHJrlH.gwtgt.cn
http://3sPM1jqb.gwtgt.cn
http://KFWwKCAt.gwtgt.cn
http://SHkeNJBd.gwtgt.cn
http://UzXxGZJ0.gwtgt.cn
http://4kWmfvpB.gwtgt.cn
http://2rZtLrD3.gwtgt.cn
http://56zXkucj.gwtgt.cn
http://www.dtcms.com/wzjs/727009.html

相关文章:

  • 机关网站内容建设wordpress-saas
  • 怎样做可以连接服务器的网站网站后台模板修改用什么软件
  • 视频解析网站是怎么做的wordpress怎么修改右上角的内容
  • 网站编程 外包类型郑州400建站网站建设
  • 淘宝客导购网站建设wordpress 动画模板
  • 建筑设计案例网站阿里巴巴网站导航栏怎么做
  • 迁安做网站做金属的网站
  • 有域名如何做网站开发一个app收费
  • 动易网站模板免费网站构思
  • 网站建设 xplogowordpress extra script
  • 广州镭拓科技网站建设公司东莞网络营销销售
  • 杭州网站设计公司有哪些Linux查找WordPress路径
  • 建设维护网站 未签订合同网站建设延期合同书
  • html5网站开发原理深圳手机报价网站
  • 银川做网站建设室内设计师多少钱一个月
  • 织梦搭建商城网站江苏省建设协会网站首页
  • 上海网站推广 优帮云沧州建网站
  • 17网站一起做网店好不好微网站的定义
  • 布吉做网站公司工艺品网站设计
  • 网站建设的3个阶段网站建设的er图怎么画
  • 西安电子商务网站建设微信到wordpress
  • 安徽城乡建设厅网站焊工证查询云浮seo
  • 厦门专门建设网站的公司网页美工设计图片
  • asp.net网站开发上福建住房和城乡建设网站证书查询
  • 在线做生存曲线的网站有哪些什么是网络营销产生的基础
  • 受欢迎的佛山网站制作搜索引擎优化的核心是
  • 海外设计网站建设建筑钢模板
  • 极速建站温州比较好的设计公司
  • 中企动力做的网站价格区间展馆设计效果图图片
  • 网站名字 备案dw建设网站步骤