[C++之旅] 18 公有继承、保护继承和私有继承
继承
继承的类称为派生类或子类,被继承的类称为基类或父类。继承即是按照不同的继承方式将基类的成员继承到派生类中,即派生类拥有基类的成员。
继承的方式
公有继承
class A : public B
保护继承
class A : protected B
私有继承
class A : private B
访问属性
继承方式 | 基类成员访问属性 | 派生类成员访问基类属性 |
---|---|---|
private成员 | 无法访问 | |
公有继承 | protected成员 | 继承到protected下 |
public成员 | 继承到public下 | |
private成员 | 无法访问 | |
保护继承 | protected成员 | 继承到protected下 |
public成员 | 继承到protected下 | |
private成员 | 无法访问 | |
私有继承 | protected成员 | 继承private下 |
public成员 | 继承private下 |
以下定义两个类,人类中含有数据成员姓名(m_strName)及成员函数eat()
士兵类从人类派生,含有数据成员编号(m_strCode)及成员函数attack()
在main函数通过对数据的访问。
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
/**
* 定义人的类: Person
* 数据成员姓名: m_strName
* 成员函数: eat()
*/
class Person
{
public:
string m_strName;
void eat()
{
cout << "eat" << endl;
}
};
/**
* 定义士兵类: Soldier
* 士兵类公有继承人类: public
* 数据成员编号: m_strCode
* 成员函数: attack()
*/
class Soldier:public Person
{
public:
string m_strCode;
void attack()
{
cout << "fire!!!" << endl;
}
};
结果:
Jim
592
eat
fire!!!