Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der C++-Friend-Funktionen: Wie schränke ich die Zugriffsrechte von Friend-Funktionen ein?

Detaillierte Erläuterung der C++-Friend-Funktionen: Wie schränke ich die Zugriffsrechte von Friend-Funktionen ein?

WBOY
WBOYOriginal
2024-04-29 09:09:021054Durchsuche

Friend-Funktionen in C++ können Zugriffsrechte durch Zugriffsspezifizierer oder Namespaces einschränken, um nur bestimmten Funktionen oder Funktionen innerhalb eines bestimmten Namespace den Zugriff auf private Mitglieder einer Klasse zu ermöglichen.

C++ 友元函数详解:如何限制友元函数的访问权限?

C++ Detaillierte Erklärung der Freundfunktionen: Wie kann ich die Zugriffsrechte von Freundfunktionen einschränken?

In C++ ist eine Friend-Funktion eine spezielle Funktion, die externen Funktionen den Zugriff auf private Mitglieder einer Klasse ermöglicht. Es ermöglicht uns den Zugriff auf private Daten oder Funktionen einer Klasse außerhalb einer anderen Klasse und bietet so in bestimmten Situationen eine größere Flexibilität.

Beschränken Sie die Zugriffsrechte von Freundesfunktionen

Wir können die Zugriffsrechte von Freundesfunktionen auf private Mitglieder beschränken, indem wir Freundschaftserklärungen einschränken. Dafür gibt es zwei Möglichkeiten:

Methode 1: Zugriffsspezifizierer verwenden

Wir können den Zugriff von Friend-Funktionen mithilfe von Zugriffsspezifizierern (öffentlich, geschützt oder privat) einschränken. Die Syntax lautet wie folgt:

class MyClass {
  private:
    // 私有成员只能被友元函数访问
    friend void friendFunction();
};

Methode 2: Namespaces verwenden

Sie können Namespaces auch verwenden, um die Sichtbarkeit von Friend-Funktionen einzuschränken. Die Syntax lautet wie folgt:

namespace MyNamespace {
  class MyClass {
    private:
      // 私有成员由 MyNameSpace 命名空间内部所有友元函数访问
      friend class MyFriendClass;
  };
}

Praktischer Fall

Angenommen, wir haben die folgenden zwei Klassen:

class Person {
  private:
    string name;
    int age;
};

class FriendClass {
  public:
    // 可以访问私有成员,因为它是一个友元类
    void printPersonDetails(Person person) {
      cout << person.name << ", " << person.age << endl;
    }
};

Hier FriendClassPerson 类的友元类,因此它可以访问 nameage und andere private Mitglieder.

Führen Sie das Beispiel aus

int main() {
  Person person{"John Doe", 30};
  FriendClass friendObj;  
  friendObj.printPersonDetails(person);
  return 0;
}

Ausgabe:

John Doe, 30

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der C++-Friend-Funktionen: Wie schränke ich die Zugriffsrechte von Friend-Funktionen ein?. 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