虚函数与重载函数的关系

Nabila ·
更新时间:2024-09-20
· 649 次阅读

 1、普通的函数重载是,函数的参数或参数类型必须先有所不同,返回类型也可不同。

  2、虚函数重载时,要求函数名,返回类型,参数个数,参数类型,顺序都要与基类函数原型完全相同

    a、当返回类型不相同,其他完全相同,则报错

    b、函数名相同,而参数个数,参数类型,顺序不同,系统视为普通重载,失去虚函数特性

#include<iostream> using namespace std; class Base{ public:  virtual void f1();  virtual void f2();  virtual void f3();  void f4(); }; class Deriverd:public Base{ public:  virtual void f1();//是虚函数,这里的virtual可以不写  void f2(int x); //与Base的f2()作为普通函数重载,虚特性消失  //char void f3(); //错,与基类的返回类型不同  void f4(); }; void Base::f1() {  cout<<"base f1()"<<endl; } void Base::f2() {  cout<<"base f2()"<<endl; } void Base::f3() {  cout<<"base f3()"<<endl; } void Base::f4() {  cout<<"base f4()"<<endl; } void Deriverd::f1() {  cout <<"Deriverd f1()"<<endl; } void Deriverd::f2(int x) {  cout <<"Deriverd f2(int x)"<<endl; } //void Deriverd::f3() //{ // cout<<"Deriverd f3()"<<endl; //} void Deriverd::f4() {  cout <<"Deriverd f4()"<<endl; } int main() {  Base b,*bp;  Deriverd d;  bp=&d;  bp->f1();  bp->f2();  bp->f3();  bp->f4();  return 0; }



重载 函数 关系 虚函数 重载函数

需要 登录 后方可回复, 如果你还没有账号请 注册新账号