1.C++与C的区别
简单来说,C++就是在c的基础上进行改进而产生的,就好像是苹果13和13pro的区别,C是面向结构,而C++则是面向对象,而且c++在c基础上进行了全面的优化增强,所以相对于C,C++更加好用,具体如下:
(1).C++增加了命名空间
对每一块空间进行命名,可以起到相对于目录的作用,方便调用以及查找,而且避免了重名无法使用的情况。
(2).新增面向对象的编程函数等
C和C++面向的东西不一样,C面向结构,C++面向于对象,因此C++增加了面向对象的编程。
(3).新增异常处理
方便大家编程时查找异常并且将异常进行处理,关键字:throw 、try、catch。
(4).新增了变量权限
private下的成员对于整个类以及友元函数是可见的,对于类体外以及派生类(子类)是不可见的。
public下的成员对于整个类、类体外、友元函数以及派生类(子类)都是可见的。
protected下的成员对于整个类、友元函数以及派生类(子类)都是可见的,但是对于类体外是不可见的。
(5).新增了变量的引用
&为引用符号,对已有的变量取另外一个名字并进行引用。
(6).新增运算符重载以及函数重载
可以理解为对已有定义的函数或者运算符进行重新定义,然后编译器通过你的编译类型以及定义类型挑选最合适的定义进行使用
(7).C++具有更加严格的数据数据检查
2.new/delete与malloc/free的区别
(1)malloc和free是函数,new和delete是操作符
(2)malloc申请的空间不会初始化,new可以初始化
(3)malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间类型即可
(4)malloc的返回值是void*,在使用时必须強转,new不需要,因为new后面跟的是空间的类型
(5)malloc申请空间失败时,返回值是NULL,因此使用时必须判空,new 不需要,但是new需要捕获异常
(6)申请自定义类型对象时,malloc/free只会开辟和释放空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理.
3.继承与多态
(1)继承
继承顾名思义,指的就是某个类的对象共享了另一个类或其他多个类的特征(成员变量和成员方法),继承又分为单继承和多继承。
单继承就是某个类的对象只继承了另外一个类的成员变量和成员方法。
多继承就像小说男主那样,继承了多个类的成员变量和成员方法。
格式如下
class 新的类名(子类) : 继承的权限 已经存在的类(父类)
{
};
ps:多继承时
class 新的类名(子类) : 继承的权限1 已经存在的类1,继承的权限2 已经存在的类2
继承的权限
C++提供了继承的权限:public、private、protected,目的是对继承加以限制
public继承:
1)父类的public下的成员全部继承到子类的public属性下
2)父类的protected下的成员变量是继承到子类的protected属性下,父类的protected下的成员函数没有继承到子类
3)父类的private下的成员是没有继承到子类的private属性下
protected继承:
1)父类的public下的成员就全部继承到子类的protected属性下
2)父类的protected属性下的成员全部继承到子类的protected属性下
3)父类的private下的成员是没有继承到子类的private属性下
private继承:
1)父类的public下的成员就全部继承到子类的private属性下
2)父类的protected属性下的成员全部继承到子类的private属性下
3)父类的private下的成员是没有继承到子类的private属性下
(2).多态
顾名思义,就是指多种形态,指的是父接口 和子接口的同种方法所表现出来的不同形式(实现的内容不同)。
构成多态性的条件: 1)两个类具有继承关系
2)子类中必须重写父类的方法(子类方法中的内容与父类中的方法可以不一样)
3)父类中的方法必须是虚函数
当父类的指针或者引用指向子类时就可以调用多态。
4.标准模板库STL
(1).不同于类型编程,C++的标准模板库是一种独立出来的,将算法抽象出来的一种泛型编程,它所提供的容器主要有链表、数组、队列。可以实现增加删除改动查找以及排序等操作。
(2).C++的主要构成组件为泛型容器(containers),迭代器(iterators),算法(algorithms),空间配置器(allocator),配接器(adapters),仿函数(functors)。 泛型容器:特殊的数据结构,实现了数组、链表、队列、等等,实质是模板类
迭代器:就是一种复杂的指针,可以通过它读写容器中的对象,实质是运算符重载
算法:读写容器对象的逻辑算法:排序、遍历、查找、等等,实质是模板函数
空间配置器:容器的空间配置管理的模板类
配接器:它主要是用来修饰容器、仿函数、迭代器接口
仿函数:顾名思义,它类似函数,又称为函数对象(Function Object)是一个能行使函数功能的类必须重载 operator() 运算符
(3).六大组件的交互关系:容器通过空间配置器取得数据存储空间,算法通过迭代器存储容器中的内容,仿函数可以协助算法完成不同的策略的变化,适配器可以修饰仿函数。
以上内容只是我个人认为初学C++会比较重要的知识点,欢迎各位大佬批评指正