C++ 基础

1、C++与C的区别

  1. C++是完全兼容C,只要是合法的C语言程序在C++中都是合法的
  2. C++比C额外扩充了非常多的内容;
  3. 编程思想是不一样的;

C是面向过程的结构化程序设计语言:更注重的过程,其实在C中结构体就在面向对象编程了,但是不够彻底

C++是面向对象的编程语言:更注重结果的。整个程序中都是一个一个的对象。

西红柿炒蛋:

面向过程的西红柿炒蛋:每一步都要很清晰,按步骤去实现

面向对象的西红柿炒蛋:不关注过程,我只要结果

C++的应用领域:

  1. 嵌入式产品的上层的应用系统的开发就是用C++,qt
  2. 游戏
  3. 人工智能: 人脸识别---opencv其实就用C++

2、命名空间

作用:解决命名冲突的问题(变量重名、函数重名、自定义的数据类型)

分类:有标准的命名空间

      也有自定义的命名空间

格式:namespace{  };

使用:

方法1: 命名空间的名字::变量名等!

方法2: using namespace 命名空间名字;

        直接使用:

3、标准输入输出流

C中标准的输入输出:printf和scanf---头文件   stdio.h

什么是流:以字节为单位,连续不断,方向统一的就是流!

C++中输入输出流: iostream   using namespace std;

  输出流对象Cout: 输出数据到标准输出设备上

  输入流对象Cin:    从标准输入设备上输入数据到变量中

  好处:在操作的时候不要指定数据的格式

4、引用类型

目的: 弱化指针,因为指针能实现的效果,引用一样也可以实现

       减少了临时空间的分配,因为定义指针变量系统是会给分配内存空间的,但是引用类型是不需要分配内存空间的!

引用是什么?

引用就是给一个变量起个别名  ,说明它和变量本身是同一个

如何定义引用呢?   数据类型 &引用名 = 变量名;

   Int b=100;

Int &a =b;   

特点: 必须初始化,引用不可以改变指向

作用:1.作为函数参数,传参如果在函数内容对变量的值做了修改,外部变量本身的值也会发生变化;

     

定义常量的方法:

#define NUM 100

Const int a =100;

Const int &a=100;

Const修饰的变量一般都出现在函数的参数上,为了保证数据在传递的过程中,值不被修改,保证数据的安全性!!!

5、函数重载

解决问题:函数功能相似,唯有函数的参数类型不同、个数不同等一组函数

定义: 一组函数功能相似、函数名相同、函数的参数不同(参数的类型不同、个数不同、参数顺序不同),与返回值无关的函数互为重载。

每一个函数在内存中都有对应的地址;调用的时候就是根据这个地址找到对应的函数体,去执行。

谁能够代表函数的地址:函数名,只要函数名不同,地址就不一样了!

 

同一个.c文件,用gcc编译和g++编译之后,发现:

  gcc编译后函数的名字是没有发生变化的

  g++编译后函数的名字会发生变化:  重命名之后的函数名是根据参数类型与参数个数+函数名字组成的!

 

6、参数默认值

解决的问题:当函数重载中出现只有函数参数个数不同的情况下,可以通过给参数设置默认值来减少重载函数的个数,减少代码冗余!

当函数的参数有默认值的情况下,要注意二义性(调用冲突)

7、C++如何引入C的库

<1>c中标准的库直接在C++中是可以使用

<2>C中自定义的库在C++中能否直接使用呢?

验证:

  自己制作一个静态库

  先创建一个.h和一个.c

  然后使用 gcc生成.o的目标文件

  1. 面向对象编程中的类和对象

面向对象:代码中 由一个一个的对象组成(对象:数据+算法)

面向过程:数据+算法

四大特性:抽象、封装、继承、多态

抽象:C里面结构体里面的成员其实就是在抽象出来的,这个结构体的类型是封装出来的!

什么是结构体为了描述一类事物的属性而自定义的数据类型;struct

学生:

     属性:学号、姓名、性别、成绩、年龄

     行为:能学习、能做作业、吃饭、睡觉

链表:

属性: 数据域、指针域

行为: 创建链表、添加节点、删除节点、修改节点中的数据、显示链表中保存的数据

结构体只能描述事物的属性,不能够让事物活灵活现。

面向对象的编程:把属性和行为整合起来,就是封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值