【发布时间】:2014-05-14 08:39:21
【问题描述】:
我为这个小白问题道歉,但我刚刚开始使用面向对象的范例编程。
我有一个函数,它接受一个指向类 void foo(myClass* C) 的指针,而这个类有它自己的方法
class myClass{
public:
double fooMethod();
/* ... */
}
现在我想将一个带有重载方法fooMethod 的对象传递给foo,所以我想创建一个派生类
class myDerivedClass : public myClass{
public:
double fooMethod(); // overloaded method
/* ... */
}
问题是,如果我实例化一个对象myDerivedClass* D = new myDerivedClass 并将它传递给foo(D),这个函数将使用基类的方法,即myClass::fooMethod(),而我希望它使用myDerivedClass::fooMethod()。
我该如何做到这一点?我有这个问题,因为我不想重写已经工作的代码,比如foo 或myClass,但我想使我的新功能适应当前的代码结构。
非常感谢! L.
【问题讨论】:
-
你必须声明你的方法是虚拟的。
-
@Kiroxas 你的意思是在基类中还是在派生类中?还是两者兼而有之?
-
在基类中,派生类默认继承,但也可以添加。
标签: c++ inheritance derived-class