C++ 继承概述(上篇)
继承是面向对象编程中的一项核心概念,允许一个类(子类)从另一个类(父类)获取属性和行为。C++中的继承可以帮助实现代码重用和更清晰的程序结构。以下是C++继承的一些基本概念和特性:
1. 基本概念
- 基类(父类/超类): 提供基础属性和方法的类。
- 派生类(子类): 从基类继承属性和方法的类,可以扩展或重写基类的功能。
2. 语法结构
class Base {
public:
void baseFunction() {
// 基类方法实现
}
};
class Derived : public Base {
public:
void derivedFunction() {
// 派生类方法实现
}
};
在上述例子中,Derived
类继承自 Base
类,这意味着 Derived
类可以访问 Base
类的 baseFunction
方法。
3. 继承类型
在C++中,继承类型决定了基类成员在派生类中的访问权限。有三种不同的继承方式:
公共继承(public):
- 基类的
public
成员在派生类中仍然是public
。 - 基类的
protected
成员在派生类中成为protected
。
- 基类的
保护继承(protected):
- 基类的
public
和protected
成员在派生类中都成为protected
。
- 基类的
私有继承(private):
- 基类的
public
和protected
成员在派生类中都成为private
。
- 基类的
class DerivedPublic : public Base {};
class DerivedProtected : protected Base {};
class DerivedPrivate : private Base {};
4. 重写与重载
- 方法重写(Override): 派生类重写基类的方法以改变其行为。
- 方法重载(Overload): 在一个类中定义多个同名函数,但参数不同。
class Base {
public:
virtual void show() {
cout << "Base show" << endl;
}
};
class Derived : public Base {
public:
void show() override { // 重写基类的方法
cout << "Derived show" << endl;
}
};
5. 构造函数与析构函数
- 构造函数: 派生类的构造函数调用时,默认会首先调用基类的构造函数。
- 析构函数: 派生类的析构函数调用时,会自动调用基类的析构函数。
6. 多重继承
C++支持一个类继承自多个基类,这被称为多重继承。然而,多重继承需要谨慎使用,因为它可能导致复杂性和潜在的二义性问题。
class Base1 {};
class Base2 {};
class Derived : public Base1, public Base2 {};
以上是C++继承的一些基础概念。在实际编程中,要合理设计类结构,避免滥用继承,以保持代码的清晰性和可维护性。下篇将会讨论继承中的虚函数、抽象类等更高级的概念。