条件:
const
c# include <iostream> using namespace std; class CFoo { public: void Test(int) {} //virtual void Test(int) {} //virtual不能构成重载 void Test(int)const {} }; int main() { CFoo foo; foo.Test(2); const CFoo foo0; foo0.Test(2); return 0; }
派生类中重写的虚函数覆盖虚表中基类的虚函数对应项
virtual
,派生类可有可无c# include <iostream> using namespace std; class CA { public: virtual void Test() {} }; class CB :public CA { public: virtual void Test() {} //virtual int Test() {} //返回值类型不同 }; int main() { CB b; return 0; }
c# include <iostream> using namespace std; class CA { public: virtual void Test() {} }; class CB :public CA { public: virtual void Test() override {} //说明作用,提示此函数是从写的基类的虚函数 }; int main() { CB b; return 0; }
派生类的名字隐藏基类的名字
注意:如果函数声明一样,并且基类有virtual
关键字,则函数覆盖
c# include <iostream> using namespace std; class CA { public: void Test(int) {} }; class CB :public CA { public: void Test(char*) {} }; int main() { CB b; b.Test(5); //函数隐藏 return 0; }
本文作者:Na1r
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!