参考:https://blog.csdn.net/github_39655029/article/details/81134943

1、访问权限
    public:可被任意实体访问;
    protected:只允许本类及子类的成员函数访问;
    private:只允许本类的成员函数访问;

2、构造函数

    创建对象时,自动调用构造函数,不能在程序中直接调用,可有任意类型参数,但不能有返回类型;
    构造函数作用:为对象分配空间、为数据成员赋初值、请求其他资源;
    构造函数工作:初始化虚函数表、建立基类对象、建立非静态数据成员对象、安置虚基类对象信息、执行构造函数体中的代码;
    若一个类中没有定义构造函数,编译器会自动生成不带参数的默认构造函数。

3、析构函数

    析构函数作用:清除对象、释放内存;
    析构函数工作:执行析构函数中的代码、将对象占据的存储空间归还系统、做公共及用户要求的善后工作;
    析构函数无参数和返回值,一个类中只能定义一个析构函数,故不能重载。

4、内存布局

    全局数据区:存放全局变量、静态数据、常量;
    代码区:存放类成员函数、其他函数代码;
    栈区:存放局部变量、函数参数、返回数据、返回地址;
    堆区:自由存储区;
    
5、运算符重载重载形式

    重载为类的成员函数,参数个数比原来的运算数少一个。
    重载为类的友元函数,参数个数与原运算数个数一样多;
    函数重载:返回值类型可以相同可以不同,但形参列表一定不同;
    
6、静态数据成员

    初始化格式:::=;
    引用格式:::;
    
7、继承方式

    私有继承private:父类的公有成员和保护成员作为子类的的私有成员,且不能被子类的派生类访问;
    公有继承public:父类的公有成员和保护成员作为子类的成员时,仍保持原有状态,父类私有成员仍为私有;
    保护继承protected:父类的公有成员和保护成员成为子类的保护成员,且只能被他的派生类成员函数或友元访问,父类私有成员仍为私有;

8、派生类构造函数调用顺序:

    调用基类的构造函数,调用顺序按继承时说明的顺序;
    调用子对象类的构造函数,调用顺序按在类中说明的顺序;
    派生类构造函数体中内容;

9、虚函数

    虚函数必须是类的成员函数,不能是友元,但可以是另一个类的友元,不能为全局函数,也不能为静态函数,析构函数可以为虚函数,但构造函数不能为虚函数;

10、变量初始化

    局部变量:定义时,系统不会进行初始化;
    全局变量:定义时,系统自动初始化;

11、友元函数

    在类中定义过,但不是成员函数,定义在类外部,但有权访问类中成员;

12、this指针

    只有成员函数才有this指针,友元函数没有this指针;

13、静态成员函数与普通成员函数区别:

    静态成员函数没有this指针,只能访问静态成员(包括静态成员变量和静态成员函数);
    普通成员函数有this指针,可以访问类中任意成员,而静态成员函数无this指针;

14、抽像类

    包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。
    纯虚函数就是没有函数体,同时在定义的时候,其函数名后面要加上“= 0”。如下:
    例:virtual 函数类型 函数名(参数表)=0;//等于0表示没有函数体




09-02 15:51