C++——重载、缺省参数、命名空间
C++的介绍
C语言几乎是C++的一个子集,所以C语言所支持的语法在C++都支持并使用。
C++关键字
C++数据类型
基本数据类型
- 字符型 char
- 整型 int
- 浮点型 float/double
- 逻辑型 bool
- 无类型 void
非基本数据类型
- 数组 type[]
- 指针 type*
- 结构体 struct
- 联合体 union
- 枚举 enum
- 类 class
**内置类型:**c++中的这些基本类型也称为内置类型
,也就是语言内部已经定义的基本类型。
自定义类型:自己用struct/class/enum/unoin等定义的就是自定义类型。
C++为什么支持重载,C语言不支持?
函数重载允许两个或更多个函数使用同一个名字, 限制条件是它们的参数表必须不同: 参数类型不同
或参数的数目不同
根据不同的参数表,编译器就能够判断出,对某个特定的调用应该选择哪一个版本的重载函数
为什么C++支持重载而C语言中不支持呢?
主要是在编译期间,在库中生成的函数名不同。
- C语言,在符号表中的函数标识是函数本身,就会存在两个同名函数。
- C++,不是用原生的函数名,是函数名+参数(C++有函数名修饰规则,函数名+类型一起决定)
所以在编译器链接的时候,C语言因为函数名相同而会报错,而c++因为函数名不同而不会报错
缺省参数
缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用函数时,如果没有指定实参则采用该默认值,否者使用指定的实参。
缺省参数分两类:
- 全缺省:所有的参数都有默认值,若无参数传入,则使用默认的参数;若传入了部分参数,参数将会从左到右进行匹配。
- 半缺省:一部分参数带有值,带缺省值的参数必须放在参数最后边。因为传参是从右向左的。
命名空间
作用:命名空间是为了防止名字冲突提供更加可控的机制。命名空间分割了全局命名空间,其中每一个命名空间是一个作用域。
标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符: using namespace std;
就可以直接使用标准C++库中的所有成员。
或者 std::成员 的方式也可以使用C++库里的成员。
:: 是作用域解析符