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
是基类。Dog
和 Cat
是派生类。makeSound
是一个虚函数,在派生类中重写。animal
是一个指向派生类对象的基类指针。当调用 animal->makeSound()
时,会调用派生类(Cat
)中重写的 makeSound
Dog
と Cat
は派生クラスです。
makeSound
は仮想関数であり、派生クラスでオーバーライドされます。 🎜animal
は、派生クラス オブジェクトを指す基本クラス ポインターです。 🎜animal->makeSound()
を呼び出すと、派生クラス (Cat
) でオーバーライドされた makeSoundメソッドで「ニャーニャー!」と出力します。 🎜
以上がC++ では継承によってポリモーフィズムがどのように実現されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。