1.面向过程编程VS面向对象编程VS汇编语言
面向过程:复用性差,维护性差,扩展性差,但运行效率最高。
面向对象:复用性好,维护性好,扩展性好,灵活性好,但运行效率不太高。
汇编语言:对硬件开发效率高,
2.面向对象的特点:
封装、继承、多态
3.封装
作用:类是对象的抽象,对象是类的实例化。
好处:设定访问权限。起到了对属性的保护。
public:可以在类外去访问类内公有成员
一般把属性封装成private,把方法封装成public.
用类实例化对象,最好不要在类内对成员初始化。
4.C语言:结构体里不能放函数
C++中,升级了结构体,使得结构体的使用与类一样。
5.对象模型的特点:
对象所占的内存大小有成员属性决定,遵循字对齐方式。
5.this 指针保存的是调用这个方法的地址。
6.前向申明:
在一个类里面它的成员有另一个类的实例。
只能含有另一个类的指针或引用,要想含有对象本身,必须包含那个雷的头文件。
前向声明的类不能实例化。
7.函数重载:
当函数重载有默认值时,对函数形参有影响。
一个参数的右边无默认值,它的左边就不能有默认值。
成员函数重载的条件:形参的个数,类型、顺序不同,不能把返回值作为函数重载的条件。
8.构造函数的作用:初始化成员属性
成员属性初始化引入了一个新的机制:初始化列表。
成员对象,const成员、引用必须在初始化列表初始化
9.转换构造函数
把基本类型转化为类对象
Test t;
t = 5;
先是调用转换构造函数,,把5转化为类对象,然后调用重载运算符,把Test这个临时对象赋给t对象。
10.explicit:使转化构造函数不能转化
11.拷贝构造函数:
原型:Test (const Test& other)
什么时候用:用已有的对象初始化另一个对象
当函数的形参是类对象,
当函数的返回值是类对象
12.深拷贝
当类里有一个成员是指针的时候
转化构造函数/等号运算符要深拷贝
13.static关键字:
在C++里,既能修饰成员也能修饰成员方法,修饰成员这个成员必须在类体外定义,定义的时候不能加static这个关键字去修饰。
static const修饰的成员可以在类内定义并初始化
static 修饰的成员方法,不属于任何类,在静态成员方法里面不能访问非静态成员
普通的成员函数可以访问静态成员。因为静态成员函数没有this指针,无法访问非静态成员
14.const关键字
在C++中,修饰一个变量,它对应的空间是不可变的,const既可以修饰成员,也可以修饰成员方法,修饰的成员必须在初始化列表初始化。修饰的成员只能访问成员,不能修改值,如被mutable修饰则可被修改,const修饰函数在函数后面加。