ホームページ  >  記事  >  バックエンド開発  >  C++ では継承によってポリモーフィズムがどのように実現されるのでしょうか?

C++ では継承によってポリモーフィズムがどのように実現されるのでしょうか?

WBOY
WBOYオリジナル
2024-06-01 13:10:57236ブラウズ

C++ では、ポリモーフィズムは継承によって実現され、オブジェクトが同じ共通の基本クラスを持っている場合でも、オブジェクトが異なる動作をすることができます。継承は、新しいクラス (派生クラス) が既存のクラス (基本クラス) からメンバーを継承し、新しいメンバーを追加できる新しいクラスを作成する方法です。派生クラス型のポインターまたは参照を使用して仮想関数が呼び出される場合、派生クラスのオーバーライドされたメソッドが呼び出されます。

C++ 中继承如何实现多态性?

C++ で継承を通じてポリモーフィズムを実装する方法

ポリモーフィズムとは何ですか?

ポリモーフィズムにより、オブジェクトが同じ共通の基本クラスを持っている場合でも、オブジェクトが異なる動作をすることができます。 C++ では、ポリモーフィズムは継承を使用して実現されます。

継承

継承は、クラスの新しいメソッドを作成する方法であり、新しいクラス (派生クラス) は既存のクラス (基本クラス) から継承します。派生クラスは基本クラスのすべてのメンバー (データと関数) を継承し、独自の新しいメンバーを追加することもできます。

継承を通じてポリモーフィズムはどのように実現されるのでしょうか?

ポリモーフィズムでは、派生クラス オブジェクトは、その基本クラス型へのポインターまたは参照を持つことができます。派生クラス型のポインターまたは参照を使用して仮想関数が呼び出される場合、派生クラスのオーバーライドされたメソッドが呼び出されます。

例:

class Animal {
public:
    virtual void makeSound() {
        cout << "Animal makes a sound" << endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Woof woof!" << endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {
        cout << "Meow meow!" << endl;
    }
};

int main() {
    Animal* animal = new Cat(); // 指向 Cat 对象的 Animal 指针
    animal->makeSound(); // 输出 "Meow meow!"
}

上記の例では:

  • Animal が基本クラスです。
  • Animal 是基类。
  • DogCat 是派生类。
  • makeSound 是一个虚函数,在派生类中重写。
  • animal 是一个指向派生类对象的基类指针。

当调用 animal->makeSound() 时,会调用派生类(Cat)中重写的 makeSoundDogCat は派生クラスです。

makeSound は仮想関数であり、派生クラスでオーバーライドされます。 🎜animal は、派生クラス オブジェクトを指す基本クラス ポインターです。 🎜animal->makeSound() を呼び出すと、派生クラス (Cat) でオーバーライドされた makeSoundメソッドで「ニャーニャー!」と出力します。 🎜

以上がC++ では継承によってポリモーフィズムがどのように実現されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。