子类跟父类的关系
#include <iostream>
using namespace std;
class A {
public:
A() {}
~A() {}
void kill() { cout << "A kill." << endl; }
};
class B : public A {
public:
B(){}
~B(){}
void kill() { cout << "B kill." << endl; }
};
void test(A a) {
a.kill(); //调用的是A类对象的kill方法
}
int main(void) {
A a;
B b;
test(a);
test(b);
system("pause");
return 0;
}
子类型关系具有单向传递性。
C类是B类的子类型
B类是A类的子类型
#include <iostream>
#include <sstream>
using namespace std;
class Father {
public:
void play() {
cout << "KTV唱歌!" << endl;
}
};
class Son : public Father {
public:
void play() {
cout << "今晚吃鸡!" << endl;
}
};
void party(Father *f1, Father *f2) {
f1->play();
f2->play();
}
int main(void) {
Father yangKang;
Son yangGuo;
party(&yangKang, &yangGuo);
system("pause");
return 0;
}
执行:
KTV唱歌!
KTV唱歌!
注意:如果把Son改为protected继承,或private继承,就会导致编译失败!