1.引用
类的静态成员须类内定义类外初始化
静态成员为所有类对象共享,只需初始化一次。
形参为指针或引用,用const修饰以保护实参
2.构造函数与析构函数
都没有返回类型,构造函数可以重载,析构函数不能重载
3.浅拷贝与深拷贝
拷贝构造函数是特殊的构造函数,普通构造函数的形参无要求,拷贝构造函数的形参是本类对象的引用。
拷贝与赋值的区别,赋值操作两类对象均存在,而拷贝用一个已存在的对象构造另一个不存在的对象(初始化)。
浅拷贝,直接用实参的数据成员一一赋值,若数据成员的类型有指针,则对该指针也是直接赋值,指向形参的内存,并没有给新对象重载开启内存。这样最后对两对象析构时,同一块内存释放两次,异常。
深拷贝,为新对象分配新的内存(针对指针,普通类型自然是新内存)
4.protect继承与private继承。
对protect访问权限的成员,类内可以访问(即类的成员函数可以访问),类外不可访问(即类对象不行)
protect继承与private继承,
父类只派生一次的情况下,两种继承方式的派生类对父类成员的访问权限一样,即都可以访问父类的public和protect成员(对protect继承变为protect,对private继承变为pricate),不能访问父类的private成员。
父类派生两次的情况下,protect二次派生类对父类成员的访问权限不变,与一次派生类相同,但private二次派生类对所有父类成员均不可访问
虚基类,解决间接二义性
多态性,同一函数,不同对象使用,产生不同的结果。叫,猫叫,鸟叫
确定操作的具体对象的过程叫联编。
静态联编,编译时就确定了函数的对象。函数重载属于静态联编。
动态联编,运行时才确定函数的对象。
静态联编根据指针和引用的类型而不是实际指向的目标调用函数。
虚函数允许函数调用与函数体之间的联系在运行时才建立,是实现动态联编的基础。
只有类的成员函数才能说明为虚函数,虚函数在基类中定义,在派生类中被重新定义,总以产生多态效果。
纯虚函数,虚函数=0; 无函数体
纯虚函数所在的类为抽象类。
模板,函数模板和类模板。
STL标准模板库,所有容器都是类模板queue为类模板stacka;,stack类模板显示实例化,并创建对象
算法是函数模板