C++不要虚函数代替虚函数
#include <iostream>
using namespace std;
template<typename Derived>
class SegBase
{
public:
//流程框架
void segment()
{
for (int i = 0; i < 2; i++)
{
deal(); //流程内的某个核心部件函数
}
}
void deal_default()
{
cout << "Use SegBase default" << endl;
}
void deal()
{
static_cast<Derived*> (this)->deal();
}
};
class Seg : public SegBase<Seg>
{
public:
void deal()
{ //Seg改写deal函数
cout << "Use Seg modified " << endl;
}
};
class Seg2 : public SegBase<Seg2>
{
public:
typedef SegBase<Seg2> Base;
void deal()
{ //Seg2复用SegBase的默认deal函数
Base::deal_default();
}
};
void run()
{
//Seg seg;
//seg.segment();
Seg2 seg2;
seg2.segment();
}
int main(int argc, char *argv[])
{
run();
int test;
cin >> test;
return 0;
}