读书人

多态运用中怎么扩展某个子类中增加的

发布时间: 2012-09-16 17:33:17 作者: rapoo

多态运用中,如何扩展某个子类中增加的方法(其他子类无此方法),而不修改父类???
//A类是父类,
class A
{
public:
A();
virtual ~A();

virtual void Func1() = 0;
};

//B类继承A类,
class B : public A
{
public :
B();
~B();

void Func1()
{
printf("B类 你好!");
}
};


//C类继承A类。
class C : public A
{
public :
C();
~C();

void Func1()
{
printf("C类 你好!");
}
};


main()
{
A *a1 = new B();
A *a2 = new C();

a1->Func1(); // 打印 : B类 你好!
a2->Func1(); // 打印 : C类 你好!
}

上例中,假如C类中又增加了一个方法X,但是B类中没有方法X。这样的话,如果仍使用多态方式,访问父类的指针得到具体运行时的方法,就必须把方法X添加到父类A中。

如果再增加D、E、F等类(这些类都继承自A类),并且每个子类都有各自独有的方法,如果使用多态父类指针的方式调用这些方法,必须把这些方法添加到父类A中。每增加一个子类就得向父类中增加子类新增的方法,这样非常麻烦,不易维护

请教,有没有解决这种问题的 方案哈?非常感谢。

[解决办法]

探讨

引用:
visit模式,当然了visit模式自己也是有严重问题的。


visit模式是不是每一个新增的方法 都得 新增一个类?

读书人网 >C++

热点推荐