Bootstrap

cpp入门基础-详细版(上)

 前言

 景鹤-个人主页

其他专栏直达路径:《数据结构》  《练习》


相信大家都是已经学习了c语言,那么本篇文章就是在大家已经有的基础之上,对c++和c语言进行补充,从而达到对c++有一定了解~


目录

 前言

1. C++关键字

2. 命名空间

1)概念

2)使用

定义命名空间

使用命名空间

3. C++输入&输出

4. 缺省参数

5. 函数重载


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;
}

总结

本篇文章到此就结束啦~

希望能对大家有所帮助!

希望各位读者老爷能多多点赞收藏~~~

;