一、为什么要学习c++?
因为在嵌入式设备的图形界面的应用程序开发基本上使用的都是Qt,而QT使用的编程语言是c++。
二、c++的应用领域?
嵌入式、游戏、服务器、人工智能等等。
三、课程目标?
- 掌握c++的基本语法;
- 转变编程思想;
- 做出一个c++的项目;
四、c++与c的关系?
C++就是在c的基础之上又增加了很多内容,也就是c++是完全兼容c的,加了哪些东西呢?
- C++在c的基础之上增加了很多新的特性
- 编程思想的转变,c语言是面向过程的,c++是面向过程+面向对象的,也就是c++的面向过程是为了实现面向对象
五、c++新增特性
5.1命名空间
在同一个作用域内,如果出现相同的变量名、函数名等等,c语言会报错,因为出现了命名冲突,特别是不同的人/公司负责不同的模块,也容易出现命名冲突的问题,所以如何解决呢?
C++提出了命名空间的概念,就是给函数名、变量名。。。又加了一层作用域的限制,就可以解决这个问题
定义:
Namespace 命名空间名
{
变量;
函数;
类型名;
。。。。
};
访问方式:
- 作用域::
- Using namespace 命名空间名;
一般情况下,模块化编程时,命名空间的定义一般是在.h文件中,所以我们要使用某个命名空间,需要加上#include “XXX.h”、using namespace XXX;
总结:命名空间是用来解决命名冲突的
5.2标准输入输出流
对流进行操作就是在对文件进行操作
键盘 >> 标准输入流 >> 变量;
显示屏 << 标准输出流 << 变量;
我们只需要对流进行操作就ok
C++已经定义好了标准输入流和标准输出流的对象,cin和cout,在iostream头文件中的std的命名空间中定义的
所以:想要使用cin和cout,需要加:
#include <iostream>
Using namesapce std;
Cin >> a;
Cout << a;
5.3引用
Int add(int a, int b)
{
Return a+b;
}
Int x = 10, y = 5;
Add(x, y);
两个需求:
- 在函数调用时,不需要再开辟临时的空间来保存实参的值
- 弱化指针的使用
引用:就是变量的别名,操作引用就是在操作变量本身
如何理解:定义了一个变量,产生了一块内存空间,变量名就是这个空间的名字,还可以继续给这个空间起其他的名字,其他名字就是引用,而且一块空间可以又很多名字,也就是空间只有一块,但是有很多名字,通过任何一个名字都可以访问这块空间
定义引用:数据类型 &引用名 = 变量名;
Int a;
Int &b = a;
Int &c = a;
Int &d = b;
总结:
- 引用不会产生新的空间
- 引用必须初始化
- 一个变量可以有多个引用,引用也可以有引用
常引用:使用const修饰的引用---只读
指针和引用的区别?
本质的区别:指针要开辟空间,它存放的是变量的地址,访问变量属于间接访问,引用不开辟空间,是变量的别名,是直接访问
使用时的区别:
总结:引用就是变量的别名,操作引用就是在操作变量
5.4函数重载
函数功能类似,函数名相同,参数不同(参数的个数、类型),与返回值无关,这些函数就互为重载
函数重载的原理:因为函数的本质就是一段连续空间的二进制代码,在运行时,存在内存中,函数名就是这段二进制代码的首地址,所以不同的二进制代码首地址肯定是不一样的,也就是函数名必须不一样,而c++中函数名却可以一样,实际上是在编译时编译器会对每个函数进行重命名,所以本质上函数名还是不一样的,只不过对于我们写代码的人而言,看起来是一样的,让我们写代码和调用更加方便。
5.5默认参数
参数:指的是函数的形参
默认参数:在定义函数时函数的形参有默认值
5.6c++如何调用c库的函数
总结: