在通常的程序设计中很少使用private继承,因为private继承其实相当于“根据某物实现”,而这种情况应该通过类成员变量的方式来实现。
那么private继承其实只有两个使用场景:
1.需要重写虚函数:
#include <iostream>
using namespace std;
class Wing{
public:
virtual void fly()
{
cout<<"fly with wing"<<endl;
}
};
class Plane : private Wing{
private:
virtual void fly()
{
cout<<"fly with engine"<<endl;
}
public:
void doFly()
{
fly();
}
};
int main(){
Plane p;
p.doFly();
return 0;
}
类Wing提供了虚函数fly,但是类Plane需要重写fly函数,而Plane不是Wing,所以不能采用public继承,他基于Wing实现,所以采用private继承。
那么这种情况实际上可以采用另外一种更好的方式来实现:
#include <iostream>
using namespace std;
class Wing{
public:
virtual void fly()
{
cout<<"fly with wing"<<endl;
}
};
class Plane : private Wing{
private:
cl