関数のオーバーロードを使用すると、ポリモーフィズムを実現できます。つまり、基本クラス ポインターを介して派生クラス メソッドを呼び出すことができ、コンパイラーは実際のパラメーターの型に基づいてオーバーロードされたバージョンを選択します。この例では、Animal クラスは仮想 makeSound() 関数を定義し、Dog クラスと Cat クラスはこの関数をオーバーライドします。Animal* ポインターを介して makeSound() が呼び出されると、コンパイラーは指定されたオブジェクトに基づいて対応するオーバーライドされたバージョンを呼び出します。タイプ、したがってポリモーフィズムのセックスを実現します。
C 関数のオーバーロードはポリモーフィズムをどのように実現しますか?
関数のオーバーロードとは何ですか?
関数のオーバーロードは、同じ名前で、パラメーターの型や数値が異なる複数の関数を同じスコープ内で定義するプログラミング手法です。
関数のオーバーロードを使用してポリモーフィズムを実現するにはどうすればよいですか?
ポリモーフィズムは、基本クラスのポインターまたは参照を通じて派生クラスのメソッドを呼び出すことを可能にする機能です。 C における関数のオーバーロードとポリモーフィズムの関係は次のとおりです。
実践例
次のコードは、関数のオーバーロードを使用してポリモーフィズムを実現する方法を示しています。
#include <iostream> class Animal { public: virtual void makeSound() { // 声明为虚函数 std::cout << "Animal sound" << std::endl; } }; class Dog : public Animal { public: void makeSound() override { // 重写 makeSound() std::cout << "Woof woof" << std::endl; } }; class Cat : public Animal { public: void makeSound() override { // 重写 makeSound() std::cout << "Meow meow" << std::endl; } }; int main() { Animal* animalptr; // 基类指针 // 指向 Dog 对象 animalptr = new Dog(); animalptr->makeSound(); // 调用 Dog::makeSound() // 指向 Cat 对象 animalptr = new Cat(); animalptr->makeSound(); // 调用 Cat::makeSound() delete animalptr; return 0; }
出力:
えー以上がC++ 関数のオーバーロードはどのようにポリモーフィズムを実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。