C++中子类和父类的兼容关系
子类是父类的超集,子类相当于可以裁剪成父类。按照这个逻辑,子类可以当父类来用,所输出的内容是父类的内容。
#include<iostream>
using namespace std;
//定义父类
class Person{
public:
int age;
Person(){};
Person(int age);
void speak(void);
};
//定义子类
class Man:public Person{
public:
int age;
Man(){};
Man(int age);
void speak(void);
};
//父类的构造函数
Person::Person(int age)
{
this->age = age;
}
//子类的构造函数
Man::Man(int age)
{
this->age;
}
//父类的成员方法
void Person::speak(void)
{
cout << "Person Speak" << endl;
}
//子类的成员方法
void Man::speak(void)
{
cout << "Man Speak" << endl;
}
int main()
{
Person pn(12);
Man mn(65);
//将子类当作父类来用
Person *p = &mn;
//不能将父类当成子类来用
//Man *q = &pn;
p->speak();
return 0;
}
输出的结果:
Person Speak