Chapter12——请比较函数重载和虚函数在概念上和使用方式有什么区别
2017-05-09 15:01
399 查看
函数重载的定义是:在同一作用域(如:类)中,几个函数名字相同但参数列表(参数类型,参数个数)不全相同。
虚函数的定义是:在基类中用关键词“virtual”声明成员函数,然后在派生类中正式定义或重新定义此函数,其中要求函数名、函数类型、参数类型和个数必须与基类虚函数相同。
所以函数重载和虚函数在概念上的最大差别在于函数重载针对某个类里面的同名函数而言,而虚函数是针对基类和派生类之间同名函数而言。
在使用方式方面:
函数重载需要注意作用域,在内层作用域中声明的重载函数会隐藏外层作用域中的同名函数;在调用重载函数时要注意参数匹配,注意“无匹配”和“二义性调用”等问题。
虚函数只能用virtual声明类的成员函数,不能把类外的普通函数作为虚函数,它只能用于类的继承层次结构中;在同一类族中不能再定义一个非virtual的但与虚函数具有相同参数(类型和个数)和返回类型的同名函数。
虚函数的定义是:在基类中用关键词“virtual”声明成员函数,然后在派生类中正式定义或重新定义此函数,其中要求函数名、函数类型、参数类型和个数必须与基类虚函数相同。
所以函数重载和虚函数在概念上的最大差别在于函数重载针对某个类里面的同名函数而言,而虚函数是针对基类和派生类之间同名函数而言。
在使用方式方面:
函数重载需要注意作用域,在内层作用域中声明的重载函数会隐藏外层作用域中的同名函数;在调用重载函数时要注意参数匹配,注意“无匹配”和“二义性调用”等问题。
虚函数只能用virtual声明类的成员函数,不能把类外的普通函数作为虚函数,它只能用于类的继承层次结构中;在同一类族中不能再定义一个非virtual的但与虚函数具有相同参数(类型和个数)和返回类型的同名函数。
相关文章推荐
- C++中函数覆盖和使用虚函数有什么区别
- STL工具库使用解析系列之二:自定义比较函数的两种方式(重载和仿函数)
- 函数重载和虚函数在概念和使用方式方面的区别
- [转]通俗讲解!虚函数、函数重载、重写的区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)
- 使用call_user_func_array()来回调执行函数与直接使用函数的区别是什么? 周梦康周梦康 839 2014年04月15日 提问 · 2014年04月15日 更新 关注 0 关注 收藏
- 在数组合并的时候能够使用两个函数,两者的区别是什么?
- C++中重载与重写函数区别及虚函数(转载)
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- volatile、synchronized、lock有什么区别,以及在哪些场景下使用哪种方式?
- 函数重载是什么意思?它与虚函数的概念有什么区别?
- C++中priority_queue的比较函数重载的两种方式
- glDrawArrays 函数使用的正确方式是什么?
- 在什么情况下会用到虚方法(虚函数)?它与抽像函数区别等探讨
- (转)成员函数的重载、覆盖与隐藏有什么区别啊??
- 使用 call_user_func_array() 来回调执行函数和直接调用函数的区别是什么?
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别