Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht die Überladung von C++-Funktionen Polymorphismus?

Wie erreicht die Überladung von C++-Funktionen Polymorphismus?

PHPz
PHPzOriginal
2024-04-13 12:21:01619Durchsuche

Funktionsüberladung kann verwendet werden, um Polymorphismus zu erreichen, dh eine abgeleitete Klassenmethode über einen Basisklassenzeiger aufzurufen und der Compiler die überladene Version basierend auf dem tatsächlichen Parametertyp auszuwählen. Im Beispiel definiert die Animal-Klasse eine virtuelle makeSound()-Funktion, und die Dog- und Cat-Klassen überschreiben diese Funktion. Wenn makeSound() über den Animal*-Zeiger aufgerufen wird, ruft der Compiler die entsprechende überschriebene Version basierend auf dem gezeigten Objekt auf Typ, wodurch Polymorphismus erreicht wird.

C++ 函数重载如何实现多态性?

Wie erreicht C++-Funktionsüberladung Polymorphismus?

Was ist Funktionsüberladung?

Funktionsüberladung ist eine Programmiertechnik, die mehrere Funktionen mit demselben Namen, aber unterschiedlichen Parametertypen oder -nummern im selben Bereich definiert.

Wie verwende ich Funktionsüberladung, um Polymorphismus zu erreichen?

Polymorphismus ist eine Funktion, die den Aufruf abgeleiteter Klassenmethoden über einen Basisklassenzeiger oder eine Referenz ermöglicht. Die Beziehung zwischen Funktionsüberladung und Polymorphismus in C++ ist wie folgt:

  • Funktionsüberladung ermöglicht die Erstellung mehrerer Versionen einer Funktion mit demselben Namen, aber unterschiedlichen Signaturen (Parametertypen oder Nummer).
  • Wenn eine abgeleitete Klassenmethode über einen Basisklassenzeiger oder eine Referenz aufgerufen wird, wählt der Compiler die überladene Version zum Aufrufen basierend auf dem Typ des tatsächlichen Parameters aus.

Praktisches Beispiel

Der folgende Code zeigt, wie Funktionsüberladung verwendet wird, um Polymorphismus zu erreichen:

#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;
}

Ausgabe:

Woof woof
Meow meow

Das obige ist der detaillierte Inhalt vonWie erreicht die Überladung von C++-Funktionen Polymorphismus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn