1.c和c++的不同。
(1)机制方面:c是面向过程,c++是面向对象。
(2)适用方向:c适合要求代码体积小,效率高的场景,c++适合复杂度高,更上层的。
(3)名称:c++是c的增强,对c具有包容性。
2.引用与指针的区别。
引用:给变量起别名,不需要重新开辟空间,对引用的操作就是对目标变量的操作,引用只要一级,且不能指向null。
指针:指通过某个指针变量指向一个对象后,需要重新开辟新空间,对他所指的变量间接操作,可以有很多级,且可以指向null,不用初始化。
3.引用注意点。
(1)必须初始化;
(2)引用也可以有引用
(3)引用一旦初始化以后,便不能更改。
3.1const引用介绍
const+变量=常量;
const作用是变量常量化。
4.函数重载(二进制文件的命令:nm a.out)
4.1函数重载是指在同一空间下,即同一作用域,成员函数可以同名,区别在于要调用的参数个数,与返回值无关。
4.2原理:是编译器对函数名进行了重命名,最终的函数名=函数名+参数。
5extern “C”作用:主要是为了能够正确实现c++代码调用和其他c语言代码。
6.c++中的结构体和c++中的类的区别。
c++的结构体默认的访问限定符是public,c++的类磨人的访问限定符是private。
7.封装:即隐藏对象的属性和实现细节,仅对外公开接口。
8.this指针:指向类中成员函数的第一个形参,指向的当前类对象,类名*const
this。
9.构造函数(只能有一个)
9.1定义:函数名和类名相同,参数可有可无,可以重载,没有返回值。
9.2默认构造函数:系统提供;自定义无参函数;自定义有参函数。
10.析构函数
10.1定义:~类名=函数名,没有参数,没有返回值。
11.有了 malloc/free 为什么还要 new/delete?
malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。
对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求,对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于 malloc/free。
12.拷贝构造函数:是通过一个已有的对象给新的实例化对象初始化。
12.1定义:函数名与类名相同,参数类型:const类名&+参数名,无返回值。