Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung der C++-Friend-Funktionen: Wie verwende ich Friend-Funktionen in Vorlagenklassen?

Ausführliche Erklärung der C++-Friend-Funktionen: Wie verwende ich Friend-Funktionen in Vorlagenklassen?

王林
王林Original
2024-04-29 09:45:02800Durchsuche

In C++ können Friend-Funktionen auf private Mitglieder einer Klasse zugreifen, ohne Mitgliedsfunktion der Klasse zu werden. In einer Vorlagenklasse ähnelt die Deklaration einer Friend-Funktion der Deklaration in einer normalen Klasse und muss außerhalb der Klassendefinition deklariert werden. Um beispielsweise die Friend-Funktion printValue in der Vorlagenklasse MyClass zu deklarieren, müssen Sie die Funktion außerhalb der Klassendefinition mit dem Schlüsselwort Friend deklarieren. Eine Friend-Funktion kann nur auf Mitglieder der Klasse zugreifen, in der sie als Friend deklariert ist.

C++ 友元函数详解:友元函数在模板类中的使用?

Detaillierte Erklärung der C++-Friend-Funktion: Verwendung in Vorlagenklassen

Einführung

Eine Friend-Funktion ist ein spezieller Funktionstyp in C++, der auf private Mitglieder einer Klasse zugreifen darf, ohne Mitglied zu werden Funktion der Klasse. Friend-Funktionen sind in bestimmten Situationen nützlich, beispielsweise wenn Daten oder Funktionen über Klassengrenzen hinweg gemeinsam genutzt werden müssen.

Friend-Funktionen in Template-Klassen

Das Deklarieren von Friend-Funktionen in einer Template-Klasse ist dem in einer normalen Klasse sehr ähnlich. Das folgende Beispiel zeigt, wie man eine Friend-Funktion printValue in der Vorlagenklasse MyClass deklariert: MyClass 中声明友元函数 printValue

template <typename T>
class MyClass {
public:
  T value;

  friend void printValue(const MyClass<T>& obj) {
    std::cout << "Value: " << obj.value << std::endl;
  }
};

使用友元函数

要使用友元函数,必须在类的定义外部声明该函数。可以使用 friend 关键字来指定友元函数,如下所示:

template <typename T>
void printValue(const MyClass<T>& obj);

实战案例

假设我们有一个 Node 模板类,其中包含私有数据成员 value,并想要声明一个友元函数 display 来显示节点的值。

template <typename T>
class Node {
public:
  T value;

  friend void display(const Node<T>& node) {
    std::cout << "Node Value: " << node.value << std::endl;
  }
};

在编写友元函数时,需要注意以下几点:

  • 函数必须在类的定义外部声明。
  • 函数原型不能有 constvirtualrrreee
  • Freundfunktionen verwenden
🎜Um Friend-Funktionen zu verwenden, müssen Sie die deklarieren Funktion außerhalb der Definition. Friend-Funktionen können mit dem Schlüsselwort friend angegeben werden, wie unten gezeigt: 🎜rrreee🎜🎜Praktischer Fall🎜🎜🎜Angenommen, wir haben eine Node-Vorlagenklasse, die private Datenmember value und möchten eine Friend-Funktion display deklarieren, um den Wert des Knotens anzuzeigen. 🎜rrreee🎜Beim Schreiben von Friend-Funktionen müssen Sie auf folgende Punkte achten: 🎜
    🎜Die Funktion muss außerhalb der Definition der Klasse deklariert werden. 🎜🎜Funktionsprototyp darf keinen const- oder virtual-Modifikator haben. 🎜🎜Eine Funktion kann nur auf Mitglieder der Klasse zugreifen, die sie als Freund deklariert. 🎜🎜

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der C++-Friend-Funktionen: Wie verwende ich Friend-Funktionen in Vorlagenklassen?. 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