C++的重载解释与命名空间

C++是什么:


C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

C++支持重载,C语言为什么不支持重载:


函数重载就是指:

同一作用域类,一组函数的函数名相同参数列表不同(个数不同或类型不同),返回值可同可不同。不仅函数可以重载,运算符也可以重载。
重要的是main函数不支持重载,因为程序只有一个入口!!!

C语言和c++在底层的函数解析规则不同,导致C语言不支持从重载。
翻译过程一般分为: 预处理—-编译——汇编——链接
预处理:展开头文件,宏替换,去掉注释,条件编译等工作。生成.i文件
编译:语法检查,生成汇编代码。 生成.s文件
汇编:将汇编代码转成机器码 。 生成.o文件
链接:将之前生成的文件链接到一起,生成可执行文件。 生成.out文件
一个函数的声明如下:

void  chongzai(int x,int y);

在c语言中,编译器在编译后在库中的名字为_chongzai
在c++中,编译器在编译后在库中的名字为_chongzai_int_int
还有一个函数的声明如下:

void chongzai(float x,float y);

可知道在c语言中,编译器在编译后在库中的名字为_chongzai
在c++中,编译器在编译后在库中的名字为_chongzai_float_float
在链接时,都是找名字进行链接的,就比如以上两个函数,
在C语言中两个的名字一样,就会在链接中报错。
C++中它们的名字不一样,所以就不会报错。

命名空间:


命名空间的名字在其所在作用域中是唯一的,命名控件可以在全局作用域或者其它作用域内部定义,但是不能在函数或者类的内部定义
每个命名空间都是一个作用域:
不会出现C语言中的命名冲突问题。
如果从命名空间外部使用命名空间成员:需要使用作用域辨别运算符 :: 来处理。
当我们使用该变量时要加上作用域限定符。
命名空间可以嵌套定义:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值