【C++入门(一)】(关键字,命名空间,缺省参数,函数重载)

1.关键字

C++总计63个关键字
在这里插入图片描述

2.命名空间

在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。

使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字
污染,namespace关键字的出现就是针对这种问题的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命名空间三种表达方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

3.缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参
在这里插入图片描述

缺省参数的分类

全缺省参数
在这里插入图片描述

半缺省参数
在这里插入图片描述

注意
半缺省参数必须从右往左依次来给出,不能间隔着给
缺省参数不能在函数声明和定义中同时出现
在这里插入图片描述

4.函数重载

概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表( 参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题

  • 个人理解:函数虽同名,但是多功能,弥补了C语言不能命名同名函数的缺陷
    在这里插入图片描述

面试题:为什么函数重载C++可以,C语言不可以?(详解)

  • 首先一个C/C++程序运行起来要经理以下几个阶段:预处理编译汇编链接
    在这里插入图片描述
    在这里插入图片描述
    如果只有申明,没有定义,就会找不到
    在这里插入图片描述
    接下来我们在Linux里演示一下
    首先写一个C程序
    在这里插入图片描述
    结果是无法编译的
    在这里插入图片描述
    我们再通过objdump -S test1c(查看反汇编命令)指令可以查看编译过程
    在这里插入图片描述
    如果有同名函数的话,我们就无法知道到底调的是哪一个add函数
    在这里插入图片描述
    我们再写一个C++程序
    在这里插入图片描述
    我们再通过objdump -S test2cpp(查看反汇编命令)指令可以查看编译过程
    在这里插入图片描述
    总结:只要参数不同,函数出来的名字也不同,自然就不会冲突,在链接的过程中就可以找到

猜你喜欢

转载自blog.csdn.net/qq_45657288/article/details/113482454