English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Introduction aux tutoriels de base

C++ Contrôle de flux

C++ Fonction

C++ Tableau & Chaîne

C++ Structure de données

C++ Classe & Objet

C++ Pointeur

C++ Héritage

C++ STL tutoriel

C++ manuel de référence

C++ contrôle des droits d'accès d'héritage (public, protected, private)

Dans cet article, vous allez apprendre à utiliser en C ++dans laquelle on utilise l'héritage public, l'héritage protégé et l'héritage privé. Vous apprendrez par exemple où et comment l'utiliser à travers des exemples.

Vous pouvez déclarer une classe dérivée à partir d'une classe de base ayant des spécifications d'accès différentesclasse,c'est-à-dire publicHéritage,héritage protégé ou héritage privé.

#include <iostream>
using namespace std;
class base
{
.... ... ....
};
class derived : access_specifier base
{
.... ... ....
};

Remarque :Il est possible d'utiliser les mots-clés public, protected ou private à la place de access_specifier utilisés dans le code ci-dessus.Indicateur d'accès)terme.

Contrôle d'accès et héritage

La classe dérivée peut accéder à tous les membres non privés de la classe de base. Par conséquent, si les membres de la classe de base ne doivent pas être accessibles par les membres fonctions de la classe dérivée, ils doivent être déclarés comme private dans la classe de base.

Nous pouvons résumer différents types d'accès en fonction des droits d'accès, comme indiqué ci-dessous :

访问publicprotectedprivate
同一个类yesyesyes
派生类yesyesno
外部的类yesnono

一个派生类继承了所有的基类方法,但下列情况除外:

  • 基类的构造函数、析构函数和拷贝构造函数。

  • 基类的重载运算符。

  • 基类的友元函数。

继承类型

当一个类派生自基类,该基类可以被继承为 public、protected private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。

我们几乎不使用 protected private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。

  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。

  • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。

多继承

多继承即一个子类可以有多个父类,它继承了多个父类的特性。

C++ 类可以从多个类继承成员,语法如下:

class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};

其中,访问修饰符继承方式是 public、protectedprivate 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔,如上所示。现在让我们一起看看下面的示例:

#include <iostream>
 
using namespace std;
 
// 基类 Shape
class Shape 
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
   protected:
      int width;
      int height;
};
 
// 基类 PaintCost
class PaintCost 
{
   public:
      int getCost(int area)
      {
         return area * 70;
      }
};
 
// 派生类
class Rectangle: public Shape, public PaintCost
{
   public:
      int getArea()
      { 
         return (width * height); 
      }
};
 
int main(void)
{
   Rectangle Rect;
   int area;
 
   Rect.setWidth(5);
   Rect.setHeight(7);
 
   area = Rect.getArea();
   
   // Affichage de la surface de l'objet
   cout << "Surface totale: " << Rect.getArea() << endl;
 
   // Affichage du coût total
   cout << "Coût total: $" << Rect.getCost(area) << endl;
 
   return 0;
}

Lorsque le code suivant est compilé et exécuté, il produit les résultats suivants :

Surface totale: 35
Coût total: $2450