我想在c ++中使用不同的参数重载虚函数,但它不起作用.
virtual void Draw( int nDeltaX, int nDeltaY);
virtual void Draw( int nDeltaX, int nDeltaY, bool m_bFlag);
Run Code Online (Sandbox Code Playgroud)
你能告诉我原因吗?
答案是 - 因为这就是C++的工作方式.参数必须相同.C++ 11标准在10.3.2中说:
如果虚拟成员函数vf在类Base和Derived类中声明,直接或间接从Base派生,则具有相同名称的成员函数vf,parameter-type-list(8.3.5),cv-qualification和声明了Base :: vf的refqualifier(或者没有相同的),然后Derived :: vf也是虚拟的(无论是否如此声明)并覆盖11 1 Base :: vf.