功能覆盖不起作用

时间:2015-07-24 06:58:41

标签: c++ inheritance override

有关继承和函数覆盖的问题。

public ActionResult handleForm(string employeeNames)
{
   return View();
}

所以在我的程序中它是// base.h class Base { protected: void a(); public: void b(); } // base.cc void Base::a() { // Empty. return; } void Base::b() { this->a(); } // derived.h class Derived : public Base { protected: void a(); } // derived.cc void Derived::a() {std::cout << "OK" << std::endl;} ,但Derived* p = new Derived()不打印p->b()?对不起新手问题。

2 个答案:

答案 0 :(得分:2)

您必须声明一个函数virtual才能使继承有效。

// base.h
class Base {
protected:
    void a();
public:
    virtual void b();
}

答案 1 :(得分:1)

您需要在基类声明中标记var content = (provider as IUnvalidatedProvider).GetValue(key, false); b()

virtual

并注意类声明末尾的分号:这在C ++中是必需的。请注意,您不需要在派生类中编写class Base { protected: void a(); public: virtual void b(); }; ,尽管有些人采用这种风格。

(与Java不同,多态性在C ++中不是自动的)。