template 模板类模式
class Base {
public:
void step1() {
//...
}
virtual void step2() = 0;
void step3() {
//...
}
virtual void step4() = 0;
void step5() {
//...
}
void run() {
step1();
step2();
step3();
step4();
step5();
}
};
class BaseA : public Base {
void step2() {
}
void step4() {
}
};
int main() {
Base* base = new BaseA;
base->run();
return 0;
}
子类重写了父类的虚函数方法,因为父类已经提供了模板方法run,父类指针base指向了子类对象BaseA,调用的时候就会晚绑定因为虚函数表的存在,调用的run方法中的step2和step4的两个重写的方法都是子类自己的方法,就根据父类提供的模板方法进行的调用。

浙公网安备 33010602011771号
ヾ(≧O≦)〃嗷~