我有一个类库很多。我想修改某个类的一个虚拟方法的行为。我试图简化,我有什么,那就是:在C++中重载虚拟方法
#include <iostream>
using namespace std;
class B;
class A {
public:
A(B& b_) : b(b_) {};
B& b;
virtual void printon() {
cout << "Test virtual printon A\n" << endl;
}
void print() {
cout << "Test print A\n";
printon();
}
};
class B {
protected:
A a;
public:
B() : a(*this) {};
void print() {
a.print();
};
};
而在我的节目,我可以用它喜欢:
int main() {
B* b = new B();
b->print();
return 0;
}
其实方法a.printon()
从一些其他的代码调用,不同的条件,并不打印任何东西(它做了一些其他的行为)。我需要重写此方法来执行其他操作,例如,打印“test2”。
我可以创建一个派生类newA
:
class newA : public A {
public:
newA(B& b_) : A(b_) {};
virtual void printon() {
cout << "Test printon newA"<< endl;
}
};
而且我不知道,下一步怎么办。也许创建一个类newB
,如:
class newB : public B {
public:
newB() : B() {};
};
但如何让类型A
行为B.a
像newA
类型?
退房铸造,说不定动态转换可以帮助 – 2012-02-14 08:37:55