Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung der C++-Friend-Funktionen: Welche Rolle spielen Friend-Funktionen bei der Mehrfachvererbung?

Ausführliche Erklärung der C++-Friend-Funktionen: Welche Rolle spielen Friend-Funktionen bei der Mehrfachvererbung?

WBOY
WBOYOriginal
2024-04-29 18:39:01890Durchsuche

Friend-Funktionen ermöglichen Nicht-Mitgliedsfunktionen den Zugriff auf private Mitglieder und spielen eine Rolle bei der Mehrfachvererbung, sodass abgeleitete Klassenfunktionen auf private Mitglieder der Basisklasse zugreifen können.

C++ 友元函数详解:友元函数在多继承中的作用?

C++ Detaillierte Erklärung der Freundfunktionen: Die Rolle der Freundfunktionen bei der Mehrfachvererbung

Einführung in die Freundfunktionen

Eine Freundfunktion ist eine spezielle Funktion, die die Berechtigung erhält, auf private Mitglieder zuzugreifen, und Nr Objekt dieser Klasse ist erforderlich. Es wird häufig verwendet, um Nicht-Mitgliedsfunktionen den Zugriff auf private Daten zu ermöglichen.

Syntax:

class ClassName {
    ... // 类成员
    friend FunctionName;
};

Die Rolle des Freundes funktioniert bei der Mehrfachvererbung

Bei der Mehrfachvererbung kann eine abgeleitete Klasse Datenelemente und Methoden von mehreren Basisklassen erben. Wenn eine Funktion in einer abgeleiteten Klasse auf ein privates Mitglied der Basisklasse zugreifen muss, kann die Funktion als Friend-Funktion deklariert werden.

Praktischer Fall

Angenommen, wir haben eine Base-Klasse und eine abgeleitete Klasse Derived, die von Base erbt: Base 类和一个从 Base 继承的派生类 Derived

class Base {
private:
    int data;
};

class Derived : public Base {
public:
    void printData() {
        std::cout << data << std::endl;
    }
    friend void printData2(Derived& obj);
};

由于 dataBase 的私有成员,Derived 中的 printData() 函数无法直接访问它。因此,我们将 printData2() 函数声明为 Derived 的友元函数:

void printData2(Derived& obj) {
    std::cout << obj.data << std::endl;
}

现在,printData2() 可以访问 Derived 中私有的 data

int main() {
    Derived obj;
    obj.printData();
    printData2(obj);
}

Aufgrund von data ist ein privates Mitglied von Base und kann nicht direkt von der Funktion printData() in Derived aufgerufen werden. Daher deklarieren wir die Funktion printData2() als befreundete Funktion von Derived:

0
0
Jetzt kann printData2() auf zugreifen Privates <code>data-Mitglied in Derived.

Verwendung:

🎜rrreee🎜Ausgabe: 🎜rrreee

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der C++-Friend-Funktionen: Welche Rolle spielen Friend-Funktionen bei der Mehrfachvererbung?. 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