1.C++ 类继承
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。

image.png
2.C++ 类继承规则
class derived-class: access-specifier base-class
- access-specifier 访问修饰符 : public、protected 或 private 其中的一个
- base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。
// 基类
class Animal {
// eat() 函数
// sleep() 函数
};
//派生类
class Dog : public Animal {
// bark() 函数
};
3. 继承类型
- 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
- 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
- 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
4. 具体实现
4.1 定义头文件Aminal.h
#ifndef AMINAL_H
#define AMINAL_H
#include <iostream>
using namespace std;
class Aminal
{
private:
int age;
protected:
string sex;
/* data */
public:
Aminal(/* args */);
~Aminal();
void setAge(int ae);
int getAge();
void setSex(string sx);
string getSex();
};
#endif
4.2 头文件实现Aminal.cpp
#include <iostream>
#include "Aminal.h"
using namespace std;
Aminal::Aminal(/* args */)
{
}
Aminal::~Aminal()
{
}
void Aminal::setAge(int ae)
{
age = ae;
}
int Aminal::getAge()
{
return age;
}
void Aminal::setSex(string se)
{
sex = se;
}
string Aminal::getSex()
{
return sex;
}
4.3 Main.cpp 调用 Aminal.h
#include <iostream>
#include <Aminal.h>
using namespace std;
class Dog: public Aminal{
public:
string getAgeAndSex()
{
auto a = getAge();
return sex+"-"+ to_string(a);
}
};
// 执行
int main() {
Dog dg;
dg.setAge(18);
dg.setSex("男");
cout<< "拿到值:"<<dg.getAgeAndSex()<<endl;
return 0;
}
总结:继承类可以使用基类中的变量和函数,具体使用哪个根据你使用的继承类型有关