||
0,静态变量,类的静态成员变量,函数静态变量
类的静态成员存在于任何对象之外,对象中不包含任何静态成员有关的数据。
定义:类的静态函数,定义类内或类外,类外不要重复关键字static
类的静态数据成员必须在类的外部定义和初始化。 double Account::interestRate = initRate();
1,多态:通过在基类中定义虚函数,在子类覆盖基类的虚函数,用子类的对象赋给基类的指针或引用,在该指针或引用进行函数调用时就可以根据实际的子类类型选择函数(本质就是动态绑定,对应的指针或引用有动态类型和静态类型之分).
静态类型是定义时的类型,编译时已知。
动态类型运行时才知道,依赖于实际绑定的参数。
2,抽象类:含有一个或多个纯虚函数的类,无法创建抽象类的对象.
3,虚函数:在函数前加上关键字virtual,目的就是实现多态,虚函数的调用直到运行时才被解析.
tip:类内有虚函数,析构函数也应该为虚函数。
4,纯虚函数:声明纯虚函数是在分号前加上=0,不需要(但可以)被定义.
5,覆盖(override):子类覆盖基类的虚函数
6,重载(overloaded):同一个函数名,通过不同参数来区分不同函数.
tip:重载虚函数(覆盖),衍生类也声明virtual。
7,函数对象(仿函数):重载了函数调用符的类.
定义:
struct CmpByKeyLength {
bool operator() (const string& k1, const string& k2) {
return k1.length() < k2.length();
}
};
使用:
map < string, int, CmpByKeyLength > name_score_map;
sort(vec.begin(), vec.end(), CmpByKeyLength());
8,接口和抽象类的区别
接口类:满足特定条件的类,一般以Interface为后缀。不能被实例化,声明了纯虚函数。
纯接口:只有纯虚函数和静态函数(除了析构函数)的类等等限制
tip多重继承:Google规范,最多只有一个基类是非抽象类,其他都是纯接口类。
9,组合和继承
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 14:51
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社