Class的两个经典的分类
class without pointer member(s)
class with pointer mumber(s)
类的特殊成员函数
构造函数
与内置类型的初始化操作相似,将类的数据初始化,初始化的顺序与类内定义的数据成员顺序相同;
类名(形参表){...}
无返回值类型,其他与成员函数一样。
拷贝构造函数
与拷贝构造形式相似,数据在类中传递
类名(类名 &对象名){...}
拷贝赋值函数
操作符=的重载
类类型 & operator =(类名& 对象名){...
return *this
}
析构函数
在程序结束是调用,做收尾工作
~类名(){...}
动态内存
程序中栈内存是静态内存,堆内存是动态内存可以使用new来分配动态空间;
类名*P=new 类名;
与delete P;配合使用
也可以分配动态数组
类名*P=new 类名[];
与delete []P配合;
切记:一定要用delete 释放内存,否则内存泄漏;
类的静态数据成员
静态数据成员
用关键字static声明
为该类的所有对象共享,静态数据成员具有静态生存期。
必须在类外定义和初始化,用(::)来指明所属的类。
类的静态函数成员
类外代码可以使用类名和作用域操作符来调用静态成员函数。
静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态成员函数。
如果访问非静态成员,要通过对象来访问。
面对对象
继承 复合 委托
继承
有三种方式继承 :public ,protect,private
常用公用继承
继承的构造函数
先初始化基类,再初始化派生类。
派生类名::派生类名(参数表):基类名1(基类1初始化参数表), ... ,基类名n(基类名n初始化参数),成员对象名1(成员对象1初始化参数列表), ... , 成员对象名m(成员对象m初始化参数列表)
{
派生类构造函数的其他操作;
}
继承的析构函数
先初始化派生类,再初始化基类。
虚函数
non-virtual 你不希望派生类继承重新定义;
virtual 你希望通过派生类继承重新定义;
pure virtual 你希望派生类继承并且一定要重新定义;