我有两个简单的c ++类:
class base { protected: double a ; public: double getValue(void) { return a ; } double getValue2(void) { return 2*this->getValue() ; } } // end class base class derived : public base { private: double b ; public: double getValue(void) { return a+b ; } } // end class derived
然后我打电话
derived A ; A.getValue2() ;
问题是,该方法从基类(而不是派生类)getValue2()
调用该方法getValue()
.是否可以从派生类中调用getValue2()
函数getValue()
,还是需要getValue2()
在派生类中重新定义?
您需要做的就是getValue
virtual
在基类中创建:
virtual double getValue(void) { return a ; }
那个函数将virtual
通过整个类结构(不需要在子类中重复关键字,尽管有些人为了清晰起见而这样做).
与Java不同,virtual
-ness不是自动的.