#include <iostream>
using namespace std;
/*在派生类中可以覆盖基类的方法,(调用派生类对象时,只运行派生类实现的函数,而不运行基类实现的函数)
* 只要在派生类中重新命名一个跟基类成员函数一样的名字及参数就可以覆盖基类方法
*
*/
class Person {
protected: //只能在派生类内部访问protected成员,外部不可访问
bool man;
public: // public权限,可被派生类访问
void CheckPerson();
Person(bool initValue) { //构造函数的重载,带初始值
man = initValue;
cout << "Person constructor" << endl;
}
~Person() {
cout << "~Person deconstructor" << endl;
}
};
void Person::CheckPerson() {
if (man)
cout << "Person is man" << endl;
else
cout << "Person is woman" << endl;
}
class Man: public Person { //public继承,可访问基类public和protected权限的成员
public:
void CheckPerson(); //覆盖基类的方法
Man() : Person(true) {}; //利用初始化列表,对基类的成员进行初始化(基类重载构造函数需要初始化值)
~Man() {};
};
/*类Man继承了Person的public和protected成员,这里覆盖基类中的函数CheckPerson
第三十节 C++ 继承之覆盖基类的成员函数(方法)
最新推荐文章于 2023-11-30 09:53:34 发布