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

网站开发报价单 excel织梦教育培训网站源码

网站开发报价单 excel,织梦教育培训网站源码,动态logo在线制作,wordpress 云共享目录 1.命名空间 2.缺省参数 3.函数重载 1.命名空间 在C中定义命名空间我们需要用到namespace关键字#xff0c;后面跟上命名空间的名字#xff0c;结构框架有点类似结构体#xff08;如图所示#xff09; 上面的代码我一一进行讲解#xff1a; 1.我们先来说第三行和main函… 目录 1.命名空间 2.缺省参数 3.函数重载 1.命名空间 在C中定义命名空间我们需要用到namespace关键字后面跟上命名空间的名字结构框架有点类似结构体如图所示 上面的代码我一一进行讲解 1.我们先来说第三行和main函数中的代码意思第三行代码的意思是展开std库的空间std是C的一个基础库我们为什么要展开它呢包了iostream文件难道不行吗这就要涉及到编译C程序时编译器的搜索方式了编译器默认是从局部空间和全局空间来进行搜索而我们的cout和endl虽然在iostream文件里但它不在编译器的默认搜索范围之内所以想使用cout和endl我们有两种方式 第一种就是上述展开std库的方法 第二种我们可以指定到对应的空间域进行调用如图所示 这是一种方法但是这样写太麻烦了所以在一般的联系中我们不会写到太多的代码这个时候我们就可以将std库展开展开就相当于是全局域就在我们编译器的默认搜索范围之内了。 ::就是我们的域作用限制符前面跟上空间名称就可以指定到相应的位置。 2.接下来我们来了解命名空间域它就相当于划分了一块地盘里面住着各种成员比如张三家有一只羊李四家也有一只羊拿谁家的羊有地址就行张三家的羊跟李四家的也没有关系。 所以在C语言中同一个变量名不能定义两次但在C中就可以。 2.缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个缺省值在调用该函数时如果没有指定实参则采用该缺省值有则使用实参。 如图所示缺省参数使C在调用函数的时候比C更加灵活。 缺省参数主要分为两种 1.全缺省参数 顾名思义全缺省参数就是给每一个参数都设置一个缺省值 2.半缺省参数 半缺省参数就是不全部设置缺省值的情况。 注意 1.半缺省参数的设置必须从右往左依次设置不能间隔着给。 2.函数的声明与定义如果分开写的话不能同时写缺省参数缺省参数要写在声明中。 如上图我们想写的是同一个函数但是缺省值不一样这个时候我们如果不传实参编译器该选哪个值所以为了避免这种情况就规定了声明和定义不能同时写缺省值那么为什么要写在声明中呢这是因为我们测试时是会包含a.h头文件的编译器在预处理阶段会将头文件展开相当于把头文件的内容复制到测试文件中在编译阶段检测到是有这么个函数声明所以不会报错。 3.缺省参数必须是常量或全局变量。 4.C语言不支持缺省参数。 3.函数重载 自然语言中一个词可以有多重含义人们可以通过上下文来判断该词的真正含义即该词被重载了。 比如以前有一个笑话中国有两个体育项目大家根本不用看也不用担心。一个是乒乓球一个是男足。前者是“谁也赢不了”后者是“谁也赢不了”。 3.1函数重载的概念 函数重载是函数的一种特殊情况C允许在同一作用域中声明几个功能类似的同名函数这些同名函数的形参列表参数个数或类型或类型顺序不同常用来处理功能类似数据类型不同的问题。如下图所示 #includeiostream using namespace std; // 1、参数类型不同int Add(int left, int right) { cout int Add(int left, int right) endl; return left right; }double Add(double left, double right) { cout double Add(double left, double right) endl; return left right; }// 2、参数个数不同 void f() { cout f() endl; }void f(int a) { cout f(int a) endl; }// 3、参数类型顺序不同 void f(int a, char b) { cout f(int a,char b) endl; }void f(char b, int a) { cout f(char b, int a) endl; }int main() { Add(10, 20); Add(10.1, 20.2); f(); f(10); f(10, a); f(a, 10); return 0; } 5.2C支持函数重载的原理 1. 实际项目通常是由多个头文件和多个源文件构成而通过C语言阶段学习的编译链接我们可以知道【当前a.cpp中调用了b.cpp中定义的Add函数时】编译后链接前a.o的目标 文件中没有Add的函数地址因为Add是在b.cpp中定义的所以Add的地址在b.o中。那么 怎么办呢 2. 所以链接阶段就是专门处理这种问题链接器看到a.o调用Add但是没有Add的地址就 会到b.o的符号表中找Add的地址然后链接到一起。 3. 那么链接时面对Add函数链接接器会使用哪个名字去找呢这里每个编译器都有自己的函数名修饰规则。 4. 由于Windows下vs的修饰规则过于复杂而Linux下g的修饰规则简单易懂下面我们使 用了g演示了这个修饰后的名字。 5. 通过下面我们可以看出gcc的函数修饰后名字不变。而g的函数修饰后变成【_Z函数长度函数名类型首字母】。 我们在Linux中写了Add和Func两个函数接下来我们看看gcc编译后函数的名字 如图所示还是Add和Func没有任何变化。 接下来我们来看看C 我们还是写同样的代码来进行更直观的比较 在linux下采用g编译完成后函数名字的修饰发生改变编译器将函数参数类型信息添加到修改后的名字中。 windows下的命名规则: 对比Linux会发现windows下vs编译器对函数名字修饰规则相对复杂难懂但道理都是类似的我们就不做细致的研究了。 6. 通过这里就理解了C语言没办法支持重载因为同名函数没办法区分。而C是通过函数修饰规则来区分只要参数不同修饰出来的名字就不一样就支持了重载。 7. 如果两个函数函数名和参数是一样的返回值不同是不构成重载的因为调用时编译器没办法区分。
http://www.w-s-a.com/news/93958/

相关文章:

  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是
  • dedecms新网站 上传到万网的空间宝洁公司网站做的怎么样
  • 网站建设语录优惠券的网站怎么做的
  • 白山市住房和建设局网站有实力高端网站设计地址
  • 沧州网站建设制作设计优化深圳网站自然优化
  • 企业做网站 乐云seowordpress中修改html
  • 网站细节门户wordpress主题下载
  • 全景网站模版wordpress套餐
  • 华为云建网站dw制作一个手机网站模板
  • 定陶菏泽网站建设河北新出现的传染病
  • 商业网站建设案例教程郑州服装网站建设公司
  • 网站内容怎么做专业的企业管理软件
  • 深圳网站制作公司排名微网站和微信公共平台的区别
  • 权威的唐山网站建设扁平网站欣赏
  • 网站外链建设工作计划应用公园app免费制作
  • 东莞营销型网站建设全自动建站系统
  • 网络在线培训网站建设方案虚拟主机配置WordPress
  • 建设工程信息查询哪个网站好台州做优化
  • wordpress页面回收站位置台州做网站
  • 邢台市行政区划图seo咨询师招聘