#include <iostream>
using namespace std;
/*有些基类的方法在派生类被覆盖,但有时我们需要调用基类的方法。
* 这里提供了两种方式去调用基类被覆盖的方法(均使用作用域解析运算符::)。
* 1: 直接在派生类中调用被覆盖的基类方法,如 Person::CheckPerson() ;
* 2: 使用派生类对象调用被覆盖的基类方法,如 Tom.Person::CheckPerson();
*/
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(
第三十一节 C++ 继承之如何在派生类中调用基类被覆盖的函数成员(方法)
最新推荐文章于 2024-04-28 11:09:02 发布