1.函数:
形参和实参。形参不占用存储空间。当调用函数时候才开辟空间存放实参。当函数调用结束时候,形参空间被自动释放。
有2种传递机制:值传递和引用传递。
值传递是操纵内部变量,不会影响主调函数实参的值,是单向传递。
内联函数(inline关键字):取消调用环节,在编译时就直接嵌入到主函数之中。提高执行效率,但仅仅允许简单的函数、
默认参数:不可以是局部变量,右边必须也是默认参数。
函数重载:形参个数不同或类型不同。同一个函数名字。
函数模板(template关键字):template<typname t1,classt2>-模板形参表
2变量的生命域
定义屏蔽,屏蔽子区域的同名变量。
现代程序设计的观点是尽量不用和少用全局变量,少用静态存储,多用动态存储。
静态局部变量(static)长久的占用存储空间。可用于计算函数的调用次数,不会释放。
3.指针相关
迷途指针:指向已知对象得指针对象内存空间被释放后,该指针指向未知。
指向const对象的指针,不允许通过赋值改变该类指针的值。用于函数形参。const int *
const指针,int *const pc;
函数名就是一个指向函数的指针
函数指针:int(*P)(int a, int b);p=max,p=min;
4.引用相关:
int &x=y;就是本身,
5.动态分配内存:
p2=new int(10) ; deleete p2;
p1=new char[80] ; delete[]p1;
内存泄漏指分配完内存后不释放,导致内存空间越来越小。
6.枚举类型名与结构体类型名与共用体:
共用体:存储空间为总和。
共用体:Union,取最大的空间。
枚举enum,默认从0开始。
7.类,包括成员函数和数据类型,有Public(可以被任意访问),private(只能通过类中的成员函数访问),protected(和private一样,但可以被派生类成员访问)。成员函数也可以重载,但必须在类中第一次声明时就指定。实例化对象时, 每个数据成员分别分配存储空间,但是成员函数在公共存储空间中存放。类的实例化是对象,对象也可以通过对象指针,对象引用作为函数参数。可以返回局部对象,但是不可以返回局部对象指针,因为其函数调用后空间被释放,变为迷途指针。
8.构造函数:
类函数名(参数,可以指定默认参数):初始化列表{函数体};不应该同时使用构造函数重载和带有默认参数的构造函数。
默认构造函数有2种:不带参数的构造函数和带有默认参数的构造函数。如果没有构造函数,编译器自动生成合成默认构造函数。
复制构造函数:类函数名(Const 数据类型&obj),无论有无自定义函数,都存在合成复制构造函数。
2种形式:复制初始化和直接初始化。
复制初始化=,调用复制构造函数。直接初始化(),调用参数匹配的构造函数。
深复制和浅复制:
对于指针类型,浅复制指复制地址;深复制连同内存空间一起复制。
9.析构函数:
~类名(){},撤销对象时自动调用析构函数,合成析构函数调用时逆序撤销已创建的成员。
析构函数三法则,析构函数+复制构造函数+赋值运算符重载正在。(深拷贝)
10.
c++四大指针:数据,函数,数据成员,成员函数指针。数据成员指针需要在前面做域运算限定。使用类成员指针的2个方法:
.*和------>*。还有一个隐含的额外形参指针this,当函数参数与成员同名时,也需用this。
11、派生类
derived,公有,私有,保护继承。继承具有同名覆盖性。友元不具有继承性质。
保护成员与私有成员的区别:派生类可以访问基类继承的保护成员,不能访问私有成员。派生类友元可以访问派生类中派生的成员。基类私有成员只有基类可以自己访问。
12、三种继承方式:
公有继承:维持不变
保护继承,公有,保护变保护
私有继承:全部变为私有继承。
13.多态
基类定义的对象,指针,引用,可以用派生类实例化。赋值兼容规则。
14.静态联编和动态联编
动态:只有通过指针或引用,指向那个对象,就调用哪个对象的成员函数(虚函数)。
静态:.操作
虚函数:仅当派生类同名函数,增加功能时才需使用。
15.虚析构函数
基类析构函数声明为虚函数,在派生类析构时正确析构,避免内存泄漏。
16.纯虚函数和抽象类
当需要在基类中定义虚函数,但需要在派生类中才实现它时,应声明为其为纯虚函数(virtual .....=0),包含纯虚函数的类是抽象类。
17.运算符重载(operator):类的成员函数(参数个数少一个),和友元函数(正常个数)2种形式。
18.类模板:template<class t>,用T定义类模板,之后实例化类。
19泛型编程思想:通过类模板和函数模板实现源代码级别的重用。
20.异常处理:终止模型(假设异常,直接终止)和恢复模型(恢复异常未发生时的状态):
21.命名空间:空间内独立的函数名,变量,不同模块相互组合。