初识C++(上)

一、C++是什么

C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。 

C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。 

二、C++发展历程

1970年,AT&T贝尔实验室的工作人员D.Ritchie(丹尼斯·里奇)和K.Thompson(肯•汤普森)共同研发了C语言。

20世纪70年代中期,本贾尼·斯特劳斯特卢普在剑桥大学计算机中心工作。斯特劳斯特卢普希望开发一个既要编程简单、正确可靠,又要运行高效、可移植的计算机程序设计语言。而以C语言为背景,以Simula思想为基础的语言,正好符合斯特劳斯特卢普的初衷和设想。

1979年,本贾尼·斯特劳斯特卢普到了AT&T贝尔实验室,开始从事将C改良为带类的C(C with classes)的工作。

1983年,该语言被正式命名为C++。

三、入门C++

1、C++关键字

C++总计有63个关键字,而C语言有32个关键字初识C++(上)_第1张图片

 以上都是C++的关键字,其中可以看到很多还是和C语言相同,上面说过,C++是C语言的扩展,所以C++是支持C语言的语法的。

2、命名空间

在代码编写中,我们会包含许多头文件,而这些头文件中可能会含有特殊含义的一些关键字或函数,如果我们自己也定义相同的变量,则编译器便会报错,发生很多冲突。如:

在包含stdlib.h文件后,我们再创建全局变量rand便会报错

 初识C++(上)_第2张图片

 

 因此在一些大型项目中不同的人可能定义同一个变量名而报错,导致很多的麻烦,所以在C++中引入了命名空间用来避免。

2.1 定义命名空间

 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员如:

初识C++(上)_第3张图片

其中bin可随便填写。

除了定义变量,数组,函数,结构体都能定义。初识C++(上)_第4张图片

 2.2 命名空间的使用

学会了定义,现在来看怎么使用。

初识C++(上)_第5张图片

我们在命名空间内定义并且未展开时是不能使用该变量的。

我们有三种方式来使用a。

2.2.1使用 using namespace 全部展开
初识C++(上)_第6张图片
 2.2.2 使用 using 部分展开

初识C++(上)_第7张图片

 2.2.3 使用域作用限定符 :: 

初识C++(上)_第8张图片

 可以看到以上三种都没有报错。

需要了解的是,当命名空间名字相同时,两个命名空间会自动合并

初识C++(上)_第9张图片

 可以看到a与Add都可以使用。

3、输入与输出

C++是由C语言扩展而来,所以用C语言的 printf 和 scanf 也是可以的,那么C++专属的呢?

首先,使用输出对象(控制台)和输入对象(键盘)时,必须包含< iostream >头文件,以及按命名空间使用方法使用std

std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中

3.1 输出

输出使用的关键字是 cout 

初识C++(上)_第10张图片

 其中 “<<” 是流插入运算符,“endl”是特殊的C++符号,表示换行输出,换成“\n”也是可以达成同样的效果。

3.2 输入

输入用到的关键字是 cin

初识C++(上)_第11张图片

 其中 “>>” 是流提取运算符。

4、缺省参数

4.1 缺省参数概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。

缺省值也就相当于默认值。

初识C++(上)_第12张图片

 4.2 缺省参数类别

4.2.1全缺省参数

全缺省就是所有形参都赋一个缺省值。

初识C++(上)_第13张图片

 4.2.2 半缺省参数

半缺省就是只给部分形参赋缺省值。

初识C++(上)_第14张图片

 4.3 注意事项

1、半缺省参数必须从右往左依次来给出,不能间隔着给。

如:

初识C++(上)_第15张图片

 2、使用时,实参只能从左往右依次来给,不能间隔着给。

如:

初识C++(上)_第16张图片

 3、缺省参数不能在函数声明和定义中同时出现

一般是声明给,定义不给。

4、缺省值必须是常量或者全局变量

5、函数重载

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

初识C++(上)_第17张图片

在C语言中则需要三个不同名函数才能完成。 

注:返回值不同不构成重载

初识C++(上)_第18张图片

 那C++函数重载的原理是什么呢?是因为名字修饰

C/C++的程序运行需要经历以下几个阶段:预处理、编译、汇编、链接。

在函数调用时,编译器是通过函数的地址来调用函数的,而函数定义可能在不同文件中,就需要链接器进行链接。链接器通过函数名来寻找该函数地址,此函数名并非你所自己定义的函数名,每个编译器都有着自己的函数名修饰规则

初识C++(上)_第19张图片

 我们将函数定义去掉就能看到链接时所被修饰使用的函数名。

初识C++(上)_第20张图片

 VS编译器的修饰规则比较复杂,可以看到,VS中 H 表示 double,N 表示 int 。

不同的编译器有不同的函数名修饰规则。

 初识C++(上)就先到这里啦~~~

还有什么不懂的可以来私信博主哦~~

 喜欢的话记得三连哦~~~

感谢支持!!!

你可能感兴趣的:(c++,开发语言)