Heim  >  Artikel  >  Backend-Entwicklung  >  Umgang mit Referenzen und Zeigern beim Überladen und Umschreiben von C++-Funktionen

Umgang mit Referenzen und Zeigern beim Überladen und Umschreiben von C++-Funktionen

王林
王林Original
2024-04-20 11:51:01356Durchsuche

Übergeben Sie beim Überladen einer Funktion eine Referenz oder einen Zeiger. Alle Funktionen müssen denselben Datentyp verwenden. Wenn eine Funktion neu geschrieben wird, muss die Unterklassenfunktion bei Referenz-Memberfunktionen auf denselben Variablentyp verweisen. Bei Verweisen auf Mitgliedsfunktionen muss die Unterklassenfunktion auf denselben Variablentyp verweisen.

C++ 函数重载和重写中引用和指针的处理

Umgang mit Referenzen und Zeigern beim Überladen und Überschreiben von C++-Funktionen

Funktionsüberladung

Funktionsüberladung ermöglicht die Erstellung mehrerer Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten im selben Bereich. Bei Referenzen und Zeigern müssen wir auf folgende Punkte achten:

  • Bei der Übergabe einer Referenz müssen alle Funktionen auf denselben Datentyp verweisen:

    void print(const int& num);
    void print(const double& d);
  • Bei der Übergabe eines Zeigers alle Funktionen muss auf denselben Datentyp verweisen:

    void print(int* num);
    void print(double* d);

Funktionsumschreiben

Beim Funktionsumschreiben wird eine Funktion in der übergeordneten Klasse mit demselben Namen und derselben Parameterliste in der untergeordneten Klasse implementiert. Bei Referenzen und Zeigern müssen wir Folgendes beachten:

  • Für Referenz-Member-Funktionen muss die Unterklassenfunktion auf denselben Variablentyp verweisen:

    class Parent {
    public:
      void setAge(const int& age);
    };
    
    class Child : public Parent {
    public:
      void setAge(const int& age) override;  // 同一类型引用
    };
  • Um auf Member-Funktionen zu zeigen, muss die Unterklassenfunktion Folgendes tun Zeigen Sie auf den gleichen Variablentyp:

    class Parent {
    public:
      int* getPtr();
    };
    
    class Child : public Parent {
    public:
      int* getPtr() override;   // 同一类型指针
    };

Praktischer Fall

Angenommen, wir haben eine Person-Klasse, die das Alter und den Namen einer Person darstellt. Es gibt zwei Mitgliedsfunktionen in dieser Klasse: setAge(const int& age) und setName(const string& name). Person 类,它表示一个人的年龄和名字。该类中有两个成员函数:setAge(const int& age)setName(const string& name)

我们创建一个子类 Employee,继承自 Person 类,并重写 setAge 函数,在将年龄设置为 age 之前将其加 5。

class Person {
public:
    void setAge(const int& age);
    void setName(const string& name);
};

class Employee : public Person {
public:
    void setAge(const int& age) override;  // 重写setAge函数
};

// Employee 类中的 setAge 函数
void Employee::setAge(const int& age) {
    Person::setAge(age + 5);  // 调用父类setAge函数
}

现在,我们可以创建一个 Employee 对象并使用重写的 setAge

Wir erstellen eine Unterklasse Employee, erben von der Klasse Person und überschreiben die Funktion setAge, um das Alter auf age festzulegen. code>, bevor Sie 5 hinzufügen. 🎜
Employee emp;
emp.setAge(20);  // 实际设置为 25
🎜Jetzt können wir ein Employee-Objekt erstellen und die überschriebene setAge-Funktion verwenden: 🎜rrreee

Das obige ist der detaillierte Inhalt vonUmgang mit Referenzen und Zeigern beim Überladen und Umschreiben von C++-Funktionen. 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