Heim >Backend-Entwicklung >C++ >Auf welche Typmitglieder können C++-Friend-Funktionen zugreifen?

Auf welche Typmitglieder können C++-Friend-Funktionen zugreifen?

王林
王林Original
2024-04-15 17:09:01939Durchsuche

In C++ können Friend-Funktionen auf alle öffentlichen, geschützten und privaten Mitglieder einer Klasse zugreifen, der Zugriff auf private Mitglieder ist jedoch eingeschränkt und kann nur durchgeführt werden, wenn eine Mitgliedsfunktion der Klasse aufgerufen wird.

C++ 友元函数能访问哪些类型成员?

Auf welche Typmitglieder können C++-Friend-Funktionen zugreifen?

Was ist eine Freundesfunktion?

Friend-Funktion ist eine spezielle Funktion in C++, die auf private und geschützte Mitglieder einer Klasse zugreifen kann. Friend-Funktionen müssen außerhalb der Klassendefinition deklariert werden.

Typmitglieder, auf die Freundfunktionen zugreifen können

Freundfunktionen können auf die folgenden Typmitglieder zugreifen:

  • öffentliche Mitglieder: Freundfunktionen können auf alle öffentlichen Mitglieder der Klasse zugreifen.
  • geschützte Mitglieder: Freundfunktionen können auf alle geschützten Mitglieder der Klasse zugreifen.
  • private Mitglieder: Friend-Funktionen können auf private Mitglieder einer Klasse zugreifen, jedoch nur, wenn die Friend-Funktion von einer Member-Funktion der Klasse aufgerufen wird.

Praktischer Fall

Betrachten Sie den folgenden Code:

class MyClass {
private:
    int m_num;

public:
    MyClass(int num) : m_num(num) {}

    friend void print_num(MyClass& obj) {
        std::cout << obj.m_num << std::endl;
    }
};

int main() {
    MyClass obj(42);
    print_num(obj);  // 友元函数访问私有成员
    return 0;
}

Ausgabeergebnis:

42

In diesem Beispiel ist print_num() eine Freundfunktion von MyClass. Es kann auf das private Mitglied m_num zugreifen, obwohl es keine Mitgliedsfunktion von MyClass ist.

Eingeschränkter Zugriff

Es ist zu beachten, dass der Zugriff auf Freundesfunktionen auf private Mitglieder beschränkt ist. Friend-Funktionen können nur dann auf private Mitglieder zugreifen, wenn eine Mitgliedsfunktion der Klasse aufgerufen wird. Mit anderen Worten: Friend-Funktionen können nicht direkt von außen auf private Mitglieder zugreifen.

Das obige ist der detaillierte Inhalt vonAuf welche Typmitglieder können C++-Friend-Funktionen zugreifen?. 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