前言
相信大家都是已经学习了c语言,那么本篇文章就是在大家已经有的基础之上,对c++和c语言进行补充,从而达到对c++有一定了解~
目录
1. C++关键字
C++总计63个关键字,C语言32个关键字。
以下是c++的关键字:
2. 命名空间
1)概念
cpp和C语言的头文件不同
- C语言的头文件一般用
#include<stdio.h>
- 而cpp的头文件为
#include<iostream>
而在cpp的头文件之后还有
using namespace std;
也就是平常我们对于CPP都是这样写的:
#include<iostream>
using namespace std;
int main()
{
return 0;
}
其中的using namespace std; 就是我们对命名空间的使用。
命名空间使用namespace来声明,std命名空间是C++中标准库类型对象的命名空间,命名空间实际上是一个作用域
- 那么我们为什么要使用命名空间呢?他有什么作用?
首先,在cpp中存在着大量的类和函数、变量,这些变量、函数和类的名称将都存在于全局作用域中,这就存在着重名的问题,编译器不能对此进行清楚的辨析。
因此使用命名空间就是对标识符进行限定,规定他的作用范围。
减少命名冲突。
打个比方:就相当于这有一片田地(全局作用域),分属于不同的人(类、函数、变量),但是其中出现了两个名字一模一样的,都叫“张三”,这两块地根本分不清是谁的,只能给这两个张三加上一个限定域,村头的张三、村尾的张三。
而命名空间就是这个限定,明确标识符的作用域。
2)使用
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。
namesapce Queue{}
定义命名空间
1、命名空间中可以定义变量/函数/类型
2、命名空间可以嵌套
3、同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
ps:一个工程中的test.h和上面test.cpp中两个命名空间会被合并成一个
使用命名空间
需要访问命名空间时,需要使用作用域空间访问符::
命名空间的使用有三种方式:
1、加命名空间名称及作用域限定符
rintf("%d\n", N::a);
2、使用using将命名空间中某个成员引入
using N::b; int main() { printf("%d\n", N::a); printf("%d\n", b); return 0; }
3、使用using namespace 命名空间名称 引入
using namespce N; int main() { printf("%d\n", N::a); printf("%d\n", b); Add(10, 20); return 0; }
3. C++输入&输出
- 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件 以及按命名空间使用方法使用std。
- 使用cin和cout不需要考虑输入和输出的数据类型,自动识别变量类型。
- 换行使用“endl”
include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout<<"Hello world!!!"<<endl;
return 0;
}
4. 缺省参数
定义:缺省参数是声明或定义函数时为函数的参数指定一个缺省值。
在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
c++支持缺省参数,可以全缺省,也可以半缺省,当参数不只有一个时,缺省只能从最右缺省开始。
1. 半缺省参数必须从右往左依次来给出,不能间隔着给,必须连续给值!
2. 缺省参数不能在函数声明和定义中同时出现.
如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该 用那个缺省值。
3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)
5. 函数重载
函数重载:是函数的一种特殊情况,
C++允许在同一作用域中声明几个功能类似的同名函数,
这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
返回值不同,不能构成重载!
参数类型不同
// 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) 比特就业课 5.2 C++支持函数重载的原理--名字修饰(name Mangling) 为什么C++支持函数重载,而C语言不支持函数重载呢? 在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。 { cout << "f(int a)" << endl; }
参数类型顺序不同
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; }
总结
本篇文章到此就结束啦~
希望能对大家有所帮助!
希望各位读者老爷能多多点赞收藏~~~