En C++, l'héritage associe une classe dérivée à une classe de base, permettant à la classe dérivée de partager des fonctionnalités de la classe de base et d'étendre ses fonctionnalités. Le type de classe de base peut être classé comme public, protégé ou privé, ce qui affecte les droits d'accès des classes dérivées aux membres de la classe de base. En héritage simple, la classe dérivée n'a qu'une seule classe de base directe, tandis qu'en héritage multiple, il y en a plusieurs. Grâce au mot-clé virtual, une classe dérivée peut remplacer la méthode du même nom de la classe de base. Les fonctions virtuelles pures indiquent que la classe de base est une classe abstraite et que ses objets ne peuvent pas être créés. Il convient de noter que l’héritage multiple peut facilement conduire à des problèmes d’ambiguïté et doit être utilisé avec prudence.
Directives pour la gestion de l'héritage dans la conception de classes C++
Introduction
En C++, l'héritage est un mécanisme par lequel une classe dérivée hérite des membres et des fonctionnalités d'une classe de base. Il vous permet de créer de nouvelles classes partageant les fonctionnalités des classes existantes et d'étendre leurs fonctionnalités.
Hiérarchie des classes
L'héritage crée une hiérarchie de classes où la classe de base est au-dessus de ses classes dérivées. La classe de base définit les membres dont les classes dérivées peuvent hériter. Les classes dérivées peuvent ajouter leurs propres membres et méthodes et remplacer les méthodes héritées de leur classe de base.
Types de classes de base
En C++, il existe trois types de classes de base :
Types d'héritage
Il existe deux principaux types d'héritage :
Cas pratique
Exemple d'héritage unique :
class Vehicle { public: virtual void drive() = 0; // 纯虚函数 }; class Car : public Vehicle { public: void drive() override { // 具体实现将汽车的驾驶行为打印到控制台 std::cout << "Driving a car\n"; } }; int main() { Car car; car.drive(); // 调用派生类的 drive() 方法 }
Exemple d'héritage multiple :
class Animal { public: virtual void eat() = 0; }; class Mammal : public Animal { public: void eat() override { // 具体实现将哺乳动物的进食行为打印到控制台 std::cout << "Eating as a mammal\n"; } }; class Reptile : public Animal { public: void eat() override { // 具体实现将爬行动物的进食行为打印到控制台 std::cout << "Eating as a reptile\n"; } }; class Dinosaur : public Mammal, public Reptile { public: // 同时继承 Mammal 和 Reptile 的 eat() 方法 }; int main() { Dinosaur dino; dino.Mammal::eat(); // 调用 Mammal 的 eat() 方法 dino.Reptile::eat(); // 调用 Reptile 的 eat() 方法 }
Remarque : Le mot-clé
virtual
permet aux classes dérivées de remplacer les méthodes de le même nom de la base classe. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!