5,529
社区成员
发帖
与我相关
我的任务
分享
class App
{
public:
App();
virtual ~App();
void go(int argc, char** argv);
protected:
virtual void parse_options(int argc, char** argv) = 0;
virtual void validate_options() = 0;
virtual void show_options() = 0;
virtual void execute() = 0;
}
void App::go(int argc, char** argv)
{
parse_options(argc, argv);
validate_options();
if (!OPT_quiet)
{
cout << endl
<< "#---------------------------------#" << endl
<< "#" << endl
<< "# Options:" << endl
<< "#" << endl;
show_options();
cout << "#" << endl
<< "#---------------------------------#" << endl
<< endl;
}
if (!OPT_quiet) cout << "start processing" << endl;
execute();
if (!OPT_quiet) cout << "done" << endl;
}
#define DECL_APP_CLASS(class_name) class class_name\
{\
public:\
static void parse_options(int argc, char** argv);\
static void validate_options();\
static void show_options();\
static void execute();\
}
// App.h
template <typename T>
void go(int argc, char** argv)
{
T::parse_options(argc, argv);
T::validate_options();
T::show_options();
T::run();
}
不继承还要多态干嘛?多态是继承基础上出来的概念
多态
概念:同一个实现接口,使用不同的实例而执行不同的操作。
实现步骤:
1、子类重写父类的方法
2、把父类类型作为参数类型,该父类及其子类对象作为参数传入。
3、运行时,根据实际创建对象类型动态决定使用哪个方法。
4、父类引用指向子类对象时注意:该引用只能调用父类自己的方法或者是子类已重写的方法。并且首先实例化父类的构造方法