C++一个重要概念继承,继承依据一个类来定义另一个类,这样就重用了代码功能和提高执行效率。创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。已有类为基类,新建类为派生类,一个类可以派生自多个类,它可以从多个基类继承数据和函数。
基本语法:
class 基类名 {
// 基类的成员
};
class 派生类名 : 继承方式 基类名 {
// 派生类的成员
};
继承方式,可以是:
public:公有继承,基类的公有成员和保护成员在派生类中保持原有访问级别(公有和保护),私有成员不可访问。
protected:保护继承,基类的公有成员和保护成员在派生类中成为保护成员,私有成员仍不可访问。
private:私有继承,基类的公有成员和保护成员在派生类中成为私有成员,私有成员仍不可访问。
示例:
#include <iostream>
using namespace std;
// 基类
class Animal {
public:
void eat() {
cout << "This animal eats food." << endl;
}
};
// 派生类
class Dog : public Animal {
public:
void bark() {
cout << "The dog barks." << endl;
}
};
int main() {
Dog myDog;
myDog.eat(); // 继承自Animal类
myDog.bark(); // Dog类自己的方法
return 0;
}
访问控制和继承
派生类可以访问基类中,所有的非私有成员,基类成员如果不想被派生类的成员函数访问,需要在基类中声明为private。
访问 | public | protected | private |
---|---|---|---|
同一个类 | yes | yes | yes |
派生类 | yes | yes | no |
外部的类 | yes | no | no |
派生类继承了,所有的基类方法,下列情况除外:
- 基类的构造函数、析构函数和拷贝构造函数。
- 基类的重载运算符。
- 基类的友元函数。