我有打印
的代码radio.read()radio.write()
我并没有使用多态。我的问题是,如果只使用继承可以做到这种行为,为什么要使用多态?
#include<iostream>
using namespace std;
class port{
public:
write(){
cout<<"prt write()";
}
read(){
cout<<"port read()";
}
};
class a:public virtual port{
public:
read(){
cout<<"a read()";
}
};
class b:public virtual port{
public:
write(){
cout<<"b write()";
}
};
class radio:public a,public b{
public:
write(){
cout<<"radio write()";
}
read(){
cout<<"radio read()";
}
};
int main(){
radio r=new b();
r.read();
r.write();
return 0;
}
答案 0 :(得分:0)
它们并不是分开的,因为你需要继承来使用多态性。
当多个类继承自同一个基类时,会出现多态性。您可以使用它来编写使用基类(通过引用/指针)引用对象的代码,并且这些对象可以是任何派生类型。
例如,如果从类形状派生方形和圆形类,则可以编写与形状一起使用的代码,而不是专门用于派生类的代码 - 但可以通过在每个派生类中表现不同的基接口调用代码。 Shape可能有一个GetArea虚函数,Circle和Square都以不同方式实现。一些函数GetTotalArea可以遍历一组形状并在每个形状上调用GetArea。将来你可以添加一个名为Triangle的新类,GetTotalArea函数可以继续工作而不需要编辑(如果你写好了)
有时虽然你不需要多态,在那些情况下是 - 你可以使用继承而不是多态。