1. C++关键字(C++98)

2. 命名空间


在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用
域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污
染,namespace关键字的出现就是针对这种问题的。

命名空间定义

可以放变量,也可以放函数
此时程序中有三个a

可以通过编译

而我们打印一下,发现a是20
为什么?

因为近

访问全局变量中的a

访问命名空间里的a

命名空间可以嵌套

访问N3里面的变量

如果在一个工程中出现了相同名字的命名空间,那么编译器就把这些名字相同的命名空间合并到一起了
注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
~~

命名空间的使用

1,直接在成员面前加N1::
2.using N1::a;      使用这种方法相当于把a作为全局变量
3.using namesapce  N1  告诉编译器,把当前N1这个命名空间里的全部内容当作全局变量

3. C++输入&输出

c中printf函数在打印时需要进行格式控制
以前是iostream.h 但为了和c语言区分 所以去掉.h。cout在系统中给定的一个名字叫做std的这个命名空间中

  1. 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空
    间。

    注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,
    后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧
    编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。
  2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c


4. 缺省参数

C++中函数的参数也可以配备胎

4.1 缺省参数概念
缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默
认值,否则使用指定的实参。

缺省参数分类
所有参数都带有默认值

void TestFunc(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}

只有一部分参数带有默认值(从右往左给)
void TestFunc(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}

//a.h
void TestFunc(int a = 10);
// a.c
void TestFunc(int a = 20)
{}
// 注意:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省
值。

注意:
1 半缺省参数必须从右往左依次来给出,不能间隔着给实参匹配从左往右
2. 缺省参数不能在函数声明和定义中同时出现。(如果值不一样会冲突,一般会在声明中给出,)
3.缺省值必须是常量或者全局变量
4 C语言不支持(编译器不支持)

5. 函数重载

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。
比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者
是“谁也赢不了!”,后者是“谁也赢不了!”
5.1 函数重载概念
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形
参列表(参数个数 或 类型 或 顺序)必须不同
,常用来处理实现功能类似数据类型不同的问题

编译期间,编译器会推演实参的类型

参数类型一定只能是其中一个函数的全部类型

同一个作用域,同一个名字,参数列表不能一样,否则不能重载,与返回值类型相同没关系。
参数列表不同:个数,类型,类型的次序。

在c语言中不支持函数重载

为什么c中不支持函数重载?


编译可以通过,这个函数连函数体都没有怎么可能会编译通过?
在编译期间不会找函数具体的问题,因为编译器看到有函数声明,在当前文件没有,但其他文件中可能有
在链接期间。编译器找这个函数地址,找不到报错。


我们可以看到,我们在写函数时用的名字时Add,而编译器在找这个函数时,重新修改了这个名字,把Add修改为_Add。

让我们把文件改回成c++



编译器把名字重新命名为~~?Add@@YAHHH@Z~~

我们再次调用两个Add函数在c++环境下,我们可以看到报错,
(?Add@@YAHHH@Z)
(?Add@@YANNN@Z)

编译器重新给了两个函数不同的名字
我们再看一个例子
**(?Add@@YAHHH@Z)
(?Add@@YANNN@Z)
(?Add@@YANHN@Z)**我们可以知道在VS编译器中,H代表整形,N代表浮点型。
而在c中编译器只是简单的加了一个前缀_

C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))相关推荐

  1. 【C++入门第一期】命名空间 缺省参数 函数重载 的使用方法及注意事项

    目录 简介 命名空间 为何会有命名空间 命名空间的定义 嵌套定义 命名空间的使用 作用域限定符 using 将命名空间中某个成员引入 using namespace 将该空间所有成员引入 缺省参数 全 ...

  2. 51单片机c语言编程函数,单片机C语言教程:C51函数

    其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段.有了函数C 语言就有了模块化的优点,一般功能较多的程序,会在编写程序时把每项单独的功能分成数个子程序模 ...

  3. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪

    --by boluor 2009/5/20 如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求- 考 ...

  4. c++中的fork函数_linux c语言 fork() 和 exec 函数的简介和用法

    linux c语言 fork() 和 exec 函数的简介和用法 假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在<stdli ...

  5. c语言第八章函数程序设计,C语言程序设计-第八章 函数.ppt

    C语言程序设计-第八章 函数 函数分类(从用户使用角度 ) 1.标准函数(库函数,由系统提供 ): 例如:printf 函数 .sqrt函数. 2.用户自定义函数: 例如,上面程序中的max 函数. ...

  6. 函数别名c语言,C最佳实践 – 函数类型别名std :: function或T.

    在C中为函数类型声明类型别名时,被认为是最佳或良好的做法(我知道这部分问题可能是主观的)?或 using FuncType = void(int, int); 要么 using FuncType = ...

  7. c语言中总是从main函数开始,C语言总是从main函数开始执行吗

    //-------------------------------------------------------- 本文目录结构 |-提出问题 |-解决问题 |-推荐文章 |-作业 //------ ...

  8. php 函数 中文,PHP语言之PHP中文函数连载(二)

    本文主要向大家介绍了PHP语言之PHP中文函数连载(二),通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 函数count() 描述: 计算一变量中元素的个数 int count (mix ...

  9. c语言 字符串拷贝函数作用,C语言不使用strcpy函数如何实现字符串复制功能

    Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志&q ...

最新文章

  1. 电脑要什么配置好_学平面设计用什么电脑比较好?对配置要求高吗?
  2. win 7 系统ie浏览器升级11版本后,f12功能不可用的问题
  3. CentOS 7下安装Mono
  4. (pytorch-深度学习系列)使用softmax回归实现对Fashion-MNIST数据集进行分类-学习笔记
  5. THINKPHP聊天软件H5实时聊天室自动分配账户全开源商业源码
  6. 使Docker容器拥有可被宿主机以外的机器直接访问的独立IP
  7. Android解析ClassLoader(二)Android中的ClassLoader
  8. 一个有趣的555定时电路,有点意思哈哈
  9. 我与旧事归于尽,来年依旧迎花开~
  10. 夜曲歌词 拼音_《夜曲 - (原唱:周杰伦)》歌词 《夜曲 - (原唱:周杰伦)》LRC歌词?...
  11. matlab 电力电子仿真电路,基于Matlab_Simulink的电力电子电路仿真.pdf
  12. python主动推送链接至Bing站长平台分分钟让必应收录你的网页-必应SEO窍门
  13. stm32模数转换程序设计c语言,STM32 ADC模数转换简介
  14. Open_cv中常用函数的原型及参数解释(一)
  15. 海南“多规合一”改革促行政审批提速城乡面貌提质
  16. 数据库的备份与恢复(一)
  17. UART通信可否只接VCC、RXD、TXD而不接GND?
  18. mc服务器人物信息,MC服务器人物录:枫林血夜
  19. matlab第八课:图像分析(下)
  20. 众多虚幻游戏场景素材一键即可获取

热门文章

  1. Oracle学习:新建表空间
  2. 面向对象设计与构造第一次总结作业
  3. mybatis 使用merge into
  4. mysql中ibdata1过大的问题
  5. Spark Streaming整合logstash + Kafka wordCount
  6. .典型用户 - 场景
  7. js webpack 解决跨域问题_webpack-dev-server 作代理解决跨域,让你的本地开发飞起来...
  8. c++ map 多线程同时更新值 崩溃_深入理解并发安全的 sync.Map
  9. JDBC查询Oracle全部表名称,如何使用JDBC API从Oracle数据库中的现有表中检索记录?...
  10. oracle+trace参数设置,Oracle autotrace参数详解