C++ 面向对象编程:多继承、多态
多继承就是同时继承多个类,如果是重名的话,也需要进行对应的处理,见以下代码示例:
#include<iostream>
using namespace std;
class cA {
public:
int a;
int b;
cA():a(0),b(3){}
};
class cB {
public:
int c;
int b;
cB() :c(0), b(1) {}
};
class cC {
public:
int f;
cC() : f(2) {}
};
class cD : public cA, public cB, public cC {
};
int main() {
cD dd;
dd.a = 4;
dd.c = 3;
dd.f = 5;
dd.cA::b = 1;
dd.cB::b = 2;
return 0;
}
多态,先看下代码(调用顺序见标记)
#include<iostream>
using namespace std;
class ami {
public:
void eat() {
cout << "动物吃。。" << endl;
}
};
class cat1 : public ami{
public:
void eat() {
cout << "咪咪吃。。" << endl;
}
};
void eat(ami& m) {
m.eat(); //3
}
void Test() {
cat1 d;
eat(d); // 2
}
int main() {
Test();// 1
return 0;
}
见输出结果:动物吃。。
如果是加上一个virtual 关键字,引入虚函数,见下
#include<iostream>
using namespace std;
class ami {
public:
virtual void eat() {
cout << "动物吃。。" << endl;
}
};
class cat1 : public ami{
public:
void eat() {
cout << "咪咪吃。。" << endl;
}
};
void eat(ami& m) {
m.eat(); //3
}
void Test() {
cat1 d;
eat(d); // 2
}
int main() {
Test();// 1
return 0;
}
运行结果:咪咪吃。。
重写父类的虚函数,就可以实现子类的不同功能,输入的是父类,但是可以输出子类对应的内容,这个可以形象的描述下多态。