C++ 继承基础(上篇)
C++ 的继承是面向对象编程的一个核心概念,它允许一个类(称为子类或派生类)从另一个类(称为基类或父类)继承属性和方法。继承可以帮助代码重用,简化程序设计,并增强代码的可维护性。下面是 C++ 中继承的基本概念。
基本概念
基类(父类):这是被继承的类,提供基础的属性和功能。
派生类(子类):这是从基类继承的类,可以拥有新增的属性和功能,并可以重写基类的方法。
继承的语法
在 C++ 中,继承通过在类定义中使用冒号 :
和访问修饰符(public
、protected
或 private
)实现。语法格式如下:
class BaseClass {
public:
void baseFunction() {
// 基类的函数实现
}
};
class DerivedClass : public BaseClass {
public:
void derivedFunction() {
// 派生类的函数实现
}
};
在上面的示例中,DerivedClass
继承了 BaseClass
,并通过 public
访问修饰符指定继承类型。
访问修饰符
- public 继承:基类的公共成员和受保护成员在派生类中保持原有的访问权限。
- protected 继承:基类的公共成员和受保护成员在派生类中变为受保护成员。
- private 继承:基类的公共成员和受保护成员在派生类中变为私有成员。
继承示例
以下是一个简单的例子展示了如何使用继承:
#include <iostream>
// 基类
class Animal {
public:
void eat() {
std::cout << "Animal eats" << std::endl;
}
};
// 派生类
class Dog : public Animal {
public:
void bark() {
std::cout << "Dog barks" << std::endl;
}
};
int main() {
Dog myDog;
myDog.eat(); // 从基类继承的方法
myDog.bark(); // 派生类自有的方法
return 0;
}
注意事项
重写和隐藏:如果在基类和派生类中有同名函数,派生类中的函数会覆盖(重写)或隐藏基类中的函数。这在实现多态时尤为重要。
构造函数和析构函数:构造函数不能被继承。如果派生类需要设置从基类继承的成员,通常可以通过构造函数初始化列表调用基类的构造函数。析构函数通常也需要在派生类中定义,以正确释放资源。
这些是 C++ 继承的一些基础知识。通过在程序设计中有效利用继承,可以创建更简洁和维护性更强的代码。下篇中,我们可以探讨虚函数、抽象类以及多态等更高级的概念。