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

北京西站附近的景点有哪些网页设计的图片怎么设置

北京西站附近的景点有哪些,网页设计的图片怎么设置,微信小程序制作网站,怎么用jsp做网站文章目录类型别名的思考auto简介auto关键字的特性类型别名的思考 随着程序越来越复杂&#xff0c;程序中用到的类型也越来越复杂&#xff0c;经常体现在&#xff1a; 类型难于拼写含义不明确导致容易出错 #include <string> #include <map> int main() {std::ma…

文章目录

  • 类型别名的思考
  • auto简介
  • auto关键字的特性


类型别名的思考

随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在:

  1. 类型难于拼写
  2. 含义不明确导致容易出错
#include <string>
#include <map>
int main()
{std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange","橙子" }, {"pear","梨"} };std::map<std::string, std::string>::iterator it = m.begin();while (it != m.end()){//....}return 0;
}

std::map<std::string, std::string>::iterator 是一个类型,但是该类型太长了,特别容易写错。聪明的同学可能已经想到:可以通过typedef给类型取别名,比如:

#include <string>
#include <map>
typedef std::map<std::string, std::string> Map;
int main()
{Map m{{"apple","苹果"},{"orange","橙子"},{"pear","梨"}};Map::iterator it = m.begin();while (it != m.end()){//....}return 0;
}

使用typedef给类型取别名确实可以简化代码,但是typedef有会遇到新的难题:

typedef char* pstring;
int main()
{const pstring p1;   // 编译成功还是失败?const pstring* p2;  // 编译成功还是失败?return 0;
}

大家可以尝试在自己的编译器编译一下上述代码。

auto简介

在C++11中,引入了一个新特性–auto关键字,它可以实现变量类型自动推导,使代码更简洁、可读性更好,同时避免了代码中的类型定义和类型推断之间的不匹配问题。

  1. auto关键字的语法

auto关键字的语法比较简单,其格式为:

auto var_name = initial_value;

此处 var_name 为变量名,initial_value为赋予变量的初值,其中 auto为自动类型推导关键字。

使用auto关键字定义变量时,编译器会根据初始值的类型,自动推导出变量的类型。例如:

auto a = 10; //a为int类型
auto b = 1.5; //b为double类型
auto c = "hello"; //c为const char*类型//typeid(变量).name()可用于推导变量的类型
cout << typeid(a).name() << endl;//int
cout << typeid(b).name() << endl;//double
cout << typeid(c).name() << endl;//char const *

值得一提的是,auto关键字常常与initializer列表结合使用,这样更能体现auto的特性。可以简化代码,减少代码量,同时也可以提高代码的可读性和可维护性。例如::

std::vector<int> vec = {1, 2, 3};
for(auto it = vec.begin(); it != vec.end(); ++it){std::cout << *it << std::endl;
}

此处,auto关键字会自动推导出迭代器的类型,不用显式地进行类型定义和类型转换。

auto关键字的特性

  1. 使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型
  2. auto与指针和引用可以结合起来使用
    but用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&。
int main()
{int x = 10;auto a = &x;auto* b = &x;auto& c = x;cout << typeid(a).name() << endl;//int*cout << typeid(b).name() << endl;//int*cout << typeid(c).name() << endl;//int*a = 20;*b = 30;c = 40;return 0;
}

3.当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

void TestAuto()
{auto a = 1, b = 2;auto c = 3, d = 4.0;  // 该行代码会编译失败,因为c和d的初始化表达式类型不同
}
  1. auto不能作为函数的参数
// 此处代码编译失败,auto不能作为形参类型,因为编译器无法对a的实际类型进行推导
void TestAuto(auto a)
{}

5.auto不能直接用来声明数组

void TestAuto()
{int a[] = {1,2,3};auto b[] = {456};//报错
}

6.为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法

7.auto在实际中最常见的优势用法就是跟以后会讲到的C++11提供的新式for循环,还有lambda表达式等进行配合使用。

以上就是关于C++的auto关键字的介绍,希望对大家C++语言的学习有所帮助。

http://www.yayakq.cn/news/333796/

相关文章:

  • 网站开发进度表建设部网站技术负责人业绩表
  • 手机版网站版面设计怎么做乔拓云智能建站系统官网
  • 网站空间商推荐网站美工建设软件下载
  • 国内wordpress著名站怎么在百度上发布帖子
  • 公司网站链接杭州网站制作蒙特
  • 北京建设部网站职称微信运营者和管理员的区别
  • 营销管理网站制作湖北网
  • 推广平台网站有哪些齐齐哈尔铁峰建设局网站
  • 如何在网站做投票wordpress采集公众号图片
  • 展示型网站可以优化吗价格网怎么打不开了
  • 公路水运建设质量与安全监督系统网站分销渠道的三种模式
  • wordpress网站阿里云备案号微信怎样开公众号
  • 网站不接入备案济南做设计公司网站
  • 做cpa的网站源码如何提交网站连接到百度
  • 淘宝客网站可以做分销吗微信app下载安装官方版2019
  • 高端的网站开发万网怎么建设网站
  • 广州网站建设360元制作视频软件
  • 潍坊专业网站建设企业网站托管方案内容具体有哪些
  • 网站交易网腾讯网静态网站建设
  • wordpress怎么找到分类目录如何做公司网站优化
  • 计算机编程网课淄博seo推广
  • 河南的网站建设公司wordpress可视化编辑器
  • 手机端网站开发书籍百度指数 多少流量 网站名
  • 洛阳市住房和城乡建设网站怎样使用网站后台的模板
  • 职业学校网站模板有关做化工机械的网站
  • 如何建立公司网站?青岛哪家公司做网站好
  • 凯盛建设公司网站凡科网做的网站
  • 企业网站备案费用网络营销的工具有哪些
  • 旅游网站开发团队海宁市建设局官方网站
  • 怎么在网站后台做图片新闻jquery网站模版