不修改主程序,通过重定义成员函数Show的方法解决名字冲突
#include <iostream.h>
class Base1{
protected:
int m;
public:
void Show(){cout<<m<<endl;}
};
class Base2{
protected:
int n;
public:
void Show(){cout<<n<<endl;}
};
class Derived:public Base1,public Base2{
public:
void Set(int x,int y){m=x;n=y;}
};
void main(){
Derived Obj;
Obj.Set(45,87);
Obj.Show();
Obj.Base1::Show();
Obj.Base2::Show();
}
C++编程,如何解决成员函数的二义性
答案:1 悬赏:20 手机版
解决时间 2021-02-01 08:10
- 提问者网友:浮克旳回音
- 2021-01-31 12:34
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-31 13:05
在Derived类中public中加入
void Show(){cout<<"sdf"<<endl;}
就可以实现对基类1,和基类2的同名函数的覆盖!
完整代码如下:
#include <iostream.h>
class Base1{
protected:
int m;
public:
void Show(){cout<<m<<endl;}
};
class Base2{
protected:
int n;
public:
void Show(){cout<<n<<endl;}
};
class Derived:public Base1,public Base2
{
public:
void Show(){cout<<"sdf"<<endl;} //加在这里!!!!!!!!!!!
void Set(int x,int y){m=x;n=y;}
};
void main(){
Derived Obj;
Obj.Set(45,87);
Obj.Show();
Obj.Base1::Show();
Obj.Base2::Show();
}
void Show(){cout<<"sdf"<<endl;}
就可以实现对基类1,和基类2的同名函数的覆盖!
完整代码如下:
#include <iostream.h>
class Base1{
protected:
int m;
public:
void Show(){cout<<m<<endl;}
};
class Base2{
protected:
int n;
public:
void Show(){cout<<n<<endl;}
};
class Derived:public Base1,public Base2
{
public:
void Show(){cout<<"sdf"<<endl;} //加在这里!!!!!!!!!!!
void Set(int x,int y){m=x;n=y;}
};
void main(){
Derived Obj;
Obj.Set(45,87);
Obj.Show();
Obj.Base1::Show();
Obj.Base2::Show();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯