{"id":34899,"date":"2025-02-04T13:00:12","date_gmt":"2025-02-04T13:00:12","guid":{"rendered":"https:\/\/toposuranos.com\/material\/?p=34899"},"modified":"2025-09-21T09:54:18","modified_gmt":"2025-09-21T09:54:18","slug":"funktionen-in-c","status":"publish","type":"post","link":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/","title":{"rendered":"Funktionen in C++"},"content":{"rendered":"<p><head><title>Funktionen in C++<\/title><\/p>\n<style>\n        p, ul, ol {\n            text-align: justify;\n        }\n        h1, h2 {\n            text-align: center;\n        }<\/p>\n<p>table {\n        width: 100%;\n        border-collapse: collapse;\n        margin: 20px 0;\n        font-size: 18px;\n        text-align: left;\n    }\n    th, td {\n        padding: 12px;\n        border: 1px solid #ddd;\n    }\n    th {\n        background-color: #007BFF;\n        color: white;\n        text-align: center;\n    }\n    tr:nth-child(even) {\n        background-color: #f2f2f2;\n    }\n    tr:hover {\n        background-color: #ddd;\n    }\n    <\/style>\n<p><\/head><body><\/p>\n<header>\n<h1>Funktionen in C++: Das Schl\u00fcsselelement f\u00fcr klaren und wiederverwendbaren Code<\/h1>\n<p><em>Hast du bemerkt, dass der Code eines Programms mit zunehmender Gr\u00f6\u00dfe schwieriger zu verstehen und zu warten ist? Wenn du jemals das Gef\u00fchl hattest, dass dein Code wie ein verworrenes Labyrinth wirkt, dann liegt das daran, dass du die Funktionen in C++ noch nicht optimal nutzt. Diese fungieren als Bausteine, mit denen sich ein Programm in handhabbare Teile gliedern l\u00e4sst, was das Lesen, die Wartung und die Optimierung erleichtert. In dieser Lektion lernst du, wie du sie effektiv einsetzt, um die Organisation deines Codes zu verbessern, strukturiertere Programme zu schreiben und deine Entwicklung in C++ professioneller und effizienter zu gestalten.<\/em><\/p>\n<\/header>\n<section>\n<h2>Lernziele<\/h2>\n<p style=\"text-align:center;\">Am Ende dieser Lektion wirst du gelernt haben:<\/p>\n<ul>\n<li><strong>Verstehen<\/strong>, welchen Zweck Funktionen haben und warum sie in C++ unerl\u00e4sslich sind.<\/li>\n<li><strong>Erstellen<\/strong> von Funktionen auf korrekte Weise, um strukturierten Code sicherzustellen.<\/li>\n<li><strong>Aufrufen<\/strong> von Funktionen innerhalb eines Programms und Verstehen, wie sie ausgef\u00fchrt werden.<\/li>\n<li><strong>Unterscheiden<\/strong> zwischen Funktionen, die Werte zur\u00fcckgeben, und solchen, die lediglich Anweisungen ausf\u00fchren.<\/li>\n<li><strong>Vergleichen<\/strong> verschiedener M\u00f6glichkeiten, Funktionen zu definieren, und die beste je nach Situation auszuw\u00e4hlen.<\/li>\n<\/ul>\n<\/section>\n<p style=\"text-align:center;\">\n<strong><u>INHALTSVERZEICHNIS<\/u><\/strong><br \/>\n<a href=\"#1\">Deklaration, Aufruf und Definition von Funktionen<\/a><br \/>\n<a href=\"#2\">Ansatz: Deklarieren \u2013 Aufrufen \u2013 Definieren<\/a><br \/>\n<a href=\"#3\">Ansatz: Deklarieren und Implementieren vor dem Aufruf<\/a><br \/>\n<a href=\"#4\">Weitergabe des R\u00fcckgabewerts<\/a><br \/>\n<a href=\"#5\">Rekursion: Funktionen, die sich selbst aufrufen<\/a><br \/>\n<a href=\"#6\">Mehrfache R\u00fcckgabe in Funktionen<\/a><br \/>\n<a href=\"#7\">Funktions\u00fcberladung (Overloading)<\/a><br \/>\n<a href=\"#8\">Inline-Funktionen in C++<\/a><br \/>\n<a href=\"#9\">Abschlie\u00dfende Reflexion \u00fcber Funktionen in C++<\/a><\/p>\n<p>\n<center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/1SeIwMqpXgM?si=vYxfnmqmkLyXeaY9\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"1\"><\/a><\/p>\n<h2>Deklaration, Aufruf und Definition von Funktionen<\/h2>\n<p>\nIn C++ sind Funktionen wiederverwendbare Codebl\u00f6cke, die es erm\u00f6glichen, ein Programm modular und organisiert zu strukturieren. Jede Funktion kapselt eine spezifische Aufgabe, was dazu beitr\u00e4gt, die Klarheit und Wartbarkeit des Codes zu verbessern. Um eine Funktion in einem Programm verwenden zu k\u00f6nnen, m\u00fcssen wir drei grundlegende Schritte befolgen: <strong>Deklaration, Aufruf und Definition.<\/strong>\n<\/p>\n<p>Diese drei Konzepte sind wesentlich, und jedes erf\u00fcllt einen besonderen Zweck in der Struktur des Codes. Schauen wir uns jedes im Detail an.<\/p>\n<ol>\n<li><strong>Deklaration einer Funktion<\/strong>\n<p>Bevor eine Funktion im Code verwendet werden kann, muss der Compiler \u00fcber ihre Existenz informiert werden. Dies geschieht durch eine <strong>Funktionsdeklaration oder ein Prototyp.<\/strong><\/p>\n<p>Die Deklaration einer Funktion teilt dem Compiler drei grundlegende Dinge mit:<\/p>\n<ul>\n<li><strong>Der Datentyp, den die Funktion zur\u00fcckgeben wird<\/strong> (oder void, wenn sie nichts zur\u00fcckgibt).<\/li>\n<li><strong>Der Name der Funktion.<\/strong><\/li>\n<li><strong>Die Parameter, die sie akzeptiert<\/strong> (falls vorhanden), zusammen mit ihren Typen.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die allgemeine Syntax einer Funktionsdeklaration lautet:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">rueckgabetyp funktionsname (parameterliste);\r\n<\/pre>\n<p>Die Deklaration der Funktion wird in der Regel vor <code>main()<\/code> oder in einer Header-Datei .h platziert, wenn wir mit mehreren Dateien arbeiten.<\/p>\n<\/li>\n<li><strong>Aufruf einer Funktion<\/strong>\n<p>Nachdem eine Funktion deklariert wurde, k\u00f6nnen wir sie aufrufen, das hei\u00dft, sie im Code verwenden, damit sie ausgef\u00fchrt wird.<\/p>\n<p>Wenn eine Funktion aufgerufen wird:<\/p>\n<ul>\n<li>Wird der in ihrer Definition enthaltene Code ausgef\u00fchrt.<\/li>\n<li>Wenn die Funktion einen Wert zur\u00fcckgibt, kann dieser in einer Variablen gespeichert oder direkt in einem Ausdruck verwendet werden.<\/li>\n<li>Wenn die Funktion vom Typ <code>void<\/code> ist, f\u00fchrt sie einfach ihre Anweisungen aus, ohne etwas zur\u00fcckzugeben.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die Syntax f\u00fcr den Aufruf einer Funktion besteht einfach darin, ihren Namen zu schreiben, gefolgt von Klammern mit den Argumenten (falls erforderlich):<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nfunktionsname(argumente);\r\n<\/pre>\n<\/li>\n<li><strong>Definition der Funktion:<\/strong>\n<p>Schlie\u00dflich ist die Definition der Funktion der Teil, in dem ihr Verhalten implementiert wird. Hier werden die Anweisungen angegeben, die ausgef\u00fchrt werden, wenn die Funktion aufgerufen wird.<\/p>\n<p>Die allgemeine Syntax einer Funktionsdefinition lautet:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nrueckgabetyp funktionsname (parameterliste) {\r\n    \/\/ Funktionsk\u00f6rper: auszuf\u00fchrende Anweisungen\r\n    return wert; \/\/ (falls die Funktion einen Wert zur\u00fcckgibt)\r\n}\r\n<\/pre>\n<p>Jede Funktionsdefinition muss die folgenden Regeln einhalten:<\/p>\n<ul>\n<li>Sie muss mit der Deklaration \u00fcbereinstimmen (falls diese zuvor angegeben wurde).<\/li>\n<li>Wenn die Funktion einen Wert zur\u00fcckgibt (z. B. <code>int<\/code>), muss sie eine <code>return<\/code>-Anweisung mit dem zur\u00fcckzugebenden Wert enthalten.<\/li>\n<li>Wenn die Funktion nichts zur\u00fcckgibt (<code>void<\/code>), f\u00fchrt sie einfach ihre Anweisungen aus und ben\u00f6tigt kein <code>return<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Ausf\u00fchrungsfluss<\/h3>\n<p>Wenn das Programm ausgef\u00fchrt wird, werden die Funktionen in der Reihenfolge aufgerufen, in der sie in <code>main()<\/code> erscheinen. Der Ausf\u00fchrungsfluss ist wie folgt:<\/p>\n<ol>\n<li>Der Compiler erkennt die Deklaration der Funktion.<\/li>\n<li>In <code>main()<\/code>, wenn ein Funktionsaufruf gefunden wird, wird die Programmkontrolle an die Definition der Funktion \u00fcbergeben.<\/li>\n<li>Die Funktion f\u00fchrt ihre Anweisungen aus.<\/li>\n<li>Wenn die Funktion einen R\u00fcckgabewert hat, wird dieser an die Stelle zur\u00fcckgegeben, an der sie aufgerufen wurde.<\/li>\n<li>Der Programmfluss kehrt zu <code>main()<\/code> oder zu der Funktion zur\u00fcck, die den Aufruf durchgef\u00fchrt hat.<\/li>\n<\/ol>\n<h3>Bedeutung der vorherigen Deklaration<\/h3>\n<p>Die Deklaration von Funktionen vor ihrer Verwendung ist entscheidend, da der C++-Compiler den Code von oben nach unten verarbeitet. Wenn wir versuchen, eine Funktion aufzurufen, bevor sie definiert oder deklariert wurde, erhalten wir einen Fehler.<\/p>\n<p>Es gibt zwei Hauptm\u00f6glichkeiten, dies zu handhaben:<\/p>\n<ol>\n<li>Die Funktion vor <code>main()<\/code> deklarieren und danach definieren (wie wir es bisher gesehen haben).<\/li>\n<li>Die Funktion vor <code>main()<\/code> definieren und so die Notwendigkeit einer vorherigen Deklaration vermeiden.<\/li>\n<\/ol>\n<p>Beide Ans\u00e4tze sind g\u00fcltig, aber der erste ist in gro\u00dfen Programmen n\u00fctzlicher, in denen sich die Funktionen in verschiedenen Dateien befinden.<\/p>\n<\/section>\n<section><a name=\"2\"><\/a><\/p>\n<h2>Ansatz: Deklarieren &#8211; Aufrufen &#8211; Definieren<\/h2>\n<p>Einer der am h\u00e4ufigsten verwendeten Ans\u00e4tze zur Strukturierung von Funktionen in C++ ist der von <strong>deklarieren &#8211; aufrufen &#8211; definieren.<\/strong> Nach dieser Logik organisieren wir unseren Code in drei grundlegende Phasen:<\/p>\n<ol>\n<li><strong>Deklaration:<\/strong> Der Compiler wird \u00fcber die Existenz der Funktion informiert, bevor sie verwendet wird. Dabei werden ihr Name, der R\u00fcckgabetyp und die Parameter (falls vorhanden) angegeben.<\/li>\n<li><strong>Aufruf:<\/strong> Die Funktion wird im Hauptcode (<code>main()<\/code> in den meisten F\u00e4llen) aufgerufen und f\u00fchrt ihren Inhalt aus.<\/li>\n<li><strong>Definition:<\/strong> Die Implementierung der Funktion wird im Detail angegeben, wobei festgelegt wird, welche Anweisungen ausgef\u00fchrt werden, wenn sie aufgerufen wird.<\/li>\n<\/ol>\n<p>Diese Struktur erm\u00f6glicht eine bessere Organisation des Codes und erleichtert dessen Wartung und Skalierbarkeit. Schauen wir uns ein Beispiel an, bei dem wir diesen Ansatz anwenden:<\/p>\n<h3>Beispiel: Funktion <code>consoladice()<\/code><\/h3>\n<p>Im folgenden Code befolgen wir die Sequenz <strong>deklarieren &#8211; aufrufen &#8211; definieren:<\/strong><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n\r\n\/\/ Zuerst deklarieren wir die Funktion\r\nvoid consoladice();\r\n\r\nint main() {\r\n    \/\/ Wir rufen die Funktion auf\r\n    consoladice();\r\n    return 0;\r\n}\r\n\r\n\/\/ Wir definieren die zuvor deklarierte Funktion und beschreiben ihre interne Funktionsweise\r\nvoid consoladice() {\r\n    cout &lt;&lt; &quot;Dies ist eine einfache Zeichenkette oder Literale.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Jetzt zeige ich dir die Zahl f\u00fcnf. Hier ist sie: &quot; &lt;&lt; 5 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Sehen wir, welches Ergebnis wir erhalten, wenn wir 10\/5 rechnen. Das Ergebnis ist: &quot; &lt;&lt; 10\/5 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Eine typische Methode, die Zahl Pi zu approximieren, ist 22\/7. Das Ergebnis ist: &quot; &lt;&lt; 22\/7 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;In C++ ist es nicht dasselbe, 22\/7 zu schreiben wie 22.0\/7, die Behandlung ist unterschiedlich.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Mit dieser einfachen \u00c4nderung k\u00f6nnen wir sehen, dass 22.0\/7 gleich &quot; &lt;&lt; 22.0\/7 &lt;&lt; &quot; ist.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Findest du das nicht eine bessere Ann\u00e4herung?&quot; &lt;&lt; endl;\r\n}\r\n<\/pre>\n<p>Das erwartete Ergebnis dieses Codes ist<\/p>\n<p><code>Dies ist eine einfache Zeichenkette oder Literale.<br \/>\nJetzt zeige ich dir die Zahl f\u00fcnf. Hier ist sie: 5<br \/>\nSehen wir, welches Ergebnis wir erhalten, wenn wir 10\/5 rechnen. Das Ergebnis ist: 2<br \/>\nEine typische Methode, die Zahl Pi zu approximieren, ist 22\/7. Das Ergebnis ist: 3<br \/>\nIn C++ ist es nicht dasselbe, 22\/7 zu schreiben wie 22.0\/7, die Behandlung ist unterschiedlich.<br \/>\nMit dieser einfachen \u00c4nderung k\u00f6nnen wir sehen, dass 22.0\/7 gleich 3.14286 ist.<br \/>\nFindest du das nicht eine bessere Ann\u00e4herung?<\/code><\/p>\n<p>Um den Ansatz deklarieren &#8211; aufrufen &#8211; definieren besser zu verstehen, konzentrieren wir uns auf drei Schl\u00fcsselteile des Codes:<\/p>\n<ol>\n<li><strong>Zeile 5: Funktionsdeklaration<\/strong>\n<ul>\n<li><code>void consoladice();<\/code> teilt dem Compiler mit, dass es an einer bestimmten Stelle im Code eine Funktion mit dem Namen <code>consoladice()<\/code> geben wird.<\/li>\n<li>Es wird angegeben, dass ihr R\u00fcckgabetyp <code>void<\/code> ist, was bedeutet, dass sie keinen Wert zur\u00fcckgibt.<\/li>\n<li>Auch wenn die Implementierung von <code>consoladice()<\/code> noch nicht bekannt ist, erlaubt diese Deklaration dem Compiler, sie sp\u00e4ter zu erkennen, wenn sie verwendet wird.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Zeile 9: Funktionsaufruf<\/strong>\n<ul>\n<li>Innerhalb der Funktion <code>main()<\/code> f\u00fchrt die Zeile <code>consoladice();<\/code> die Funktion aus.<\/li>\n<li>Zu diesem Zeitpunkt erkennt der Compiler bereits die Existenz von <code>consoladice()<\/code> dank ihrer vorherigen Deklaration.<\/li>\n<li>Wenn die Funktion aufgerufen wird, wird die Programmkontrolle an ihre Definition \u00fcbergeben, wo ihr Inhalt ausgef\u00fchrt wird.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Zeilen 14 bis 22: Funktionsdefinition<\/strong>\n<ul>\n<li>Hier befindet sich die detaillierte Implementierung von <code>consoladice()<\/code>, in der ihre Anweisungen festgelegt sind.<\/li>\n<li>In diesem Fall gibt die Funktion mehrere Nachrichten auf der Konsole aus, einschlie\u00dflich Zahlen und mathematischer Operationen.<\/li>\n<li>Ein wichtiger Punkt ist der Unterschied zwischen <code>22\/7<\/code> und <code>22.0\/7<\/code>. Wenn <code>22\/7<\/code> verwendet wird, sind beide Zahlen ganze Zahlen, was aufgrund der Ganzzahldivision das Ergebnis <code>3<\/code> liefert. Beim Schreiben von <code>22.0\/7<\/code> hingegen wird die Operation in Gleitkommaarithmetik ausgef\u00fchrt und ergibt <code>3.14286<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/section>\n<section><a name=\"3\"><\/a><\/p>\n<h2>Ansatz: Deklarieren und Implementieren vor dem Aufruf<\/h2>\n<p>In C++ gibt es neben dem Ansatz <strong>deklarieren &#8211; aufrufen &#8211; definieren<\/strong> eine weitere g\u00fcltige M\u00f6glichkeit, unsere Funktionen zu strukturieren: <strong>deklarieren und implementieren vor dem Aufruf.<\/strong> Diese Methode kombiniert die Deklaration und die Definition in einem einzigen Schritt, bevor die Funktion in <code>main()<\/code> verwendet wird.<\/p>\n<p>Bei diesem Ansatz wird die Funktion nicht zun\u00e4chst deklariert und nach <code>main()<\/code> definiert, sondern direkt an derselben Stelle deklariert und definiert, bevor sie aufgerufen wird. Dies hat den Vorteil, dass eine separate Deklaration vermieden wird und der Code kompakter und in kleinen Programmen leichter lesbar ist.<\/p>\n<p>Die allgemeine Struktur dieses Ansatzes sieht folgenderma\u00dfen aus:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\/\/ Wir definieren die Funktion vor main()\r\nrueckgabetyp funktionsname(parameterliste) {\r\n    \/\/ Funktionsk\u00f6rper\r\n    return wert; \/\/ falls notwendig\r\n}\r\n\r\nint main() {\r\n    \/\/ Funktionsaufruf\r\n    funktionsname(argumente);\r\n}\r\n<\/pre>\n<p>Da sie vor <code>main()<\/code> definiert ist, kennt der Compiler sie bereits, wenn sie aufgerufen wird, sodass keine vorherige Deklaration erforderlich ist.<\/p>\n<h3><strong>Beispiel: Funktion <code>consoladice()<\/code> ohne vorherige Deklaration<\/strong><\/h3>\n<p>Sehen wir uns nun ein praktisches Beispiel an, bei dem wir diesen Ansatz anwenden:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n\r\n\/\/ Wir definieren die Funktion, bevor wir sie aufrufen\r\nvoid consoladice() {\r\n    cout &lt;&lt; &quot;Dies ist eine einfache Zeichenkette oder Literale.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Jetzt zeige ich dir die Zahl f\u00fcnf. Hier ist sie: &quot; &lt;&lt; 5 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Sehen wir, welches Ergebnis wir erhalten, wenn wir 10\/5 rechnen. Das Ergebnis ist: &quot; &lt;&lt; 10\/5 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Eine typische Methode, die Zahl Pi zu approximieren, ist 22\/7. Das Ergebnis ist: &quot; &lt;&lt; 22\/7 &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;In C++ ist es nicht dasselbe, 22\/7 zu schreiben wie 22.0\/7, die Behandlung ist unterschiedlich.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Mit dieser einfachen \u00c4nderung k\u00f6nnen wir sehen, dass 22.0\/7 gleich &quot; &lt;&lt; 22.0\/7 &lt;&lt; &quot; ist.&quot; &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Findest du das nicht eine bessere Ann\u00e4herung?&quot; &lt;&lt; endl;\r\n}\r\n\r\nint main() {\r\n    \/\/ Wir rufen die Funktion auf\r\n    consoladice();\r\n    return 0;\r\n}\r\n<\/pre>\n<p>In diesem Code k\u00f6nnen wir sehen, dass:<\/p>\n<ol>\n<li><strong>Zwischen den Zeilen 5 und 13 die Deklaration und Definition kombiniert werden<\/strong>\n<p>Die Funktion <code>consoladice()<\/code> wird direkt vor <code>main()<\/code> definiert, ohne dass eine separate Deklaration erforderlich ist.<\/p>\n<\/li>\n<li><strong>In Zeile 17 die Funktion innerhalb von <code>main()<\/code> aufgerufen wird<\/strong>\n<p>Da die Funktion bereits zuvor definiert wurde, erkennt der Compiler sie und erlaubt ihre Ausf\u00fchrung ohne Probleme.<\/p>\n<\/li>\n<li><strong>Das Ergebnis ist exakt dasselbe<\/strong>\n<p>Auf funktionaler Ebene erzeugt dieser Ansatz dasselbe Verhalten wie der Ansatz deklarieren &#8211; aufrufen &#8211; definieren, jedoch mit einer kompakteren Struktur.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u2705 Vorteile:<\/strong><\/p>\n<ul>\n<li>Direkterer und kompakterer Code in kleinen Programmen.<\/li>\n<li>Erfordert keine vorherige Deklaration, was die Anzahl der Codezeilen reduziert.<\/li>\n<li>Erleichtert das Lesen in kurzen Skripten, in denen sich alle Funktionen in einer einzigen Datei befinden.<\/li>\n<\/ul>\n<p><strong>\u274c Nachteile:<\/strong><\/p>\n<ul>\n<li>In gro\u00dfen Programmen kann die Organisation erschwert werden, wenn viele Funktionen vor <code>main()<\/code> definiert sind.<\/li>\n<li>Weniger n\u00fctzlich bei der Arbeit mit mehreren Dateien (.h und .cpp), da es vorzuziehen ist, die Deklaration in einer separaten Datei zu halten.<\/li>\n<\/ul>\n<\/section>\n<p><center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/AkIhpuZP80k?si=yT8732AKk2i-QBLe\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"4\"><\/a><\/p>\n<h2>Weitergabe des R\u00fcckgabewerts<\/h2>\n<p>Bis jetzt haben wir mit Funktionen gearbeitet, die lediglich Anweisungen ausf\u00fchren, ohne ein Ergebnis zur\u00fcckzugeben. In vielen F\u00e4llen ist es jedoch notwendig, dass eine Funktion einen Wert zur\u00fcckgibt, damit dieser in weiteren Berechnungen verwendet oder in Variablen gespeichert werden kann. Dieser Prozess wird als Weitergabe des R\u00fcckgabewerts bezeichnet.<\/p>\n<p>In diesem Abschnitt lernen wir, wie Funktionen funktionieren, die Werte zur\u00fcckgeben, worin sie sich von void-Funktionen unterscheiden und wie wir diesen Mechanismus in C++ nutzen k\u00f6nnen.<\/p>\n<h3>Praktisches Beispiel: Funktion zur Berechnung der Fl\u00e4che eines Rechtecks<\/h3>\n<p>Um die Weitergabe des R\u00fcckgabewerts zu veranschaulichen, implementieren wir eine Funktion, die die Basis und die H\u00f6he eines Rechtecks entgegennimmt und seine Fl\u00e4che berechnet.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n\r\n\/\/ Funktion, die die Fl\u00e4che eines Rechtecks berechnet und das Ergebnis zur\u00fcckgibt\r\ndouble berechneFlaeche(double basis, double hoehe) {\r\n    return basis * hoehe;\r\n}\r\n\r\nint main() {\r\n    double basis, hoehe;\r\n    \r\n    \/\/ Wir bitten den Benutzer, die Werte einzugeben\r\n    cout &lt;&lt; &quot;Geben Sie die Basis des Rechtecks ein: &quot;;\r\n    cin &gt;&gt; basis;\r\n    cout &lt;&lt; &quot;Geben Sie die H\u00f6he des Rechtecks ein: &quot;;\r\n    cin &gt;&gt; hoehe;\r\n\r\n    \/\/ Wir rufen die Funktion auf und speichern ihr Ergebnis\r\n    double flaeche = berechneFlaeche(basis, hoehe);\r\n\r\n    \/\/ Wir zeigen das Ergebnis an\r\n    cout &lt;&lt; &quot;Die Fl\u00e4che des Rechtecks betr\u00e4gt: &quot; &lt;&lt; flaeche &lt;&lt; endl;\r\n    \r\n    return 0;\r\n}\r\n<\/pre>\n<ol>\n<li><strong>Die Funktion <code>berechneFlaeche()<\/code> gibt einen Wert zur\u00fcck<\/strong>\n<ul>\n<li>Sie erh\u00e4lt zwei Werte (<code>basis<\/code> und <code>hoehe<\/code>) als Parameter.<\/li>\n<li>Sie berechnet die Fl\u00e4che durch die Multiplikation <code>basis * hoehe<\/code>.<\/li>\n<li>Sie verwendet <code>return<\/code>, um das Ergebnis der Operation an den Teil des Programms zur\u00fcckzugeben, der sie aufgerufen hat.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Verwendung des R\u00fcckgabewerts in <code>main()<\/code><\/strong>\n<ul>\n<li>Die Werte f\u00fcr <code>basis<\/code> und <code>hoehe<\/code> werden vom Benutzer eingegeben.<\/li>\n<li>Die Funktion <code>berechneFlaeche()<\/code> wird aufgerufen, und ihr Ergebnis wird in der Variablen <code>flaeche<\/code> gespeichert.<\/li>\n<li>Schlie\u00dflich wird das Ergebnis in der Konsole angezeigt.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Wesentlicher Unterschied zu einer <code>void<\/code>-Funktion<\/strong>\n<p>Wenn <code>berechneFlaeche()<\/code> vom Typ <code>void<\/code> w\u00e4re, m\u00fcssten wir das Ergebnis direkt innerhalb der Funktion ausgeben, anstatt es an <code>main()<\/code> zur weiteren Verwendung zur\u00fcckzugeben.<\/p>\n<\/li>\n<\/ol>\n<h3>Beispiel: Funktion, die bestimmt, ob eine Zahl gerade oder ungerade ist<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n\r\nbool istGerade(int zahl) {\r\n    return zahl % 2 == 0;\r\n}\r\n\r\nint main() {\r\n    int zahl;\r\n    cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;; cin &gt;&gt; zahl;\r\n\r\n    if (istGerade(zahl)) {\r\n        cout &lt;&lt; &quot;Die Zahl ist gerade.&quot; &lt;&lt; endl;\r\n    } else {\r\n        cout &lt;&lt; &quot;Die Zahl ist ungerade.&quot; &lt;&lt; endl;\r\n    }\r\n\r\n    return 0;\r\n}\r\n<\/pre>\n<p>Hier gibt die Funktion <code>istGerade()<\/code> <code>true<\/code> zur\u00fcck, wenn die Zahl gerade ist, und <code>false<\/code>, wenn sie ungerade ist, sodass <code>main()<\/code> das Ergebnis verwenden kann, um zu entscheiden, welche Nachricht angezeigt wird.<\/p>\n<\/section>\n<p><center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/cRi0T1AeVaA?si=zIcuFhfy5Xs9U_kn\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"5\"><\/a><\/p>\n<h2>Rekursion: Funktionen, die sich selbst aufrufen<\/h2>\n<p><strong>Rekursion<\/strong> ist eine Technik, bei der eine Funktion sich selbst aufruft, um Probleme zu l\u00f6sen, indem sie sie in kleinere Versionen von sich selbst unterteilt. Sie ist besonders n\u00fctzlich in Algorithmen wie der Berechnung der Fakult\u00e4t, der Fibonacci-Reihe und beim Durchlaufen von Datenstrukturen wie B\u00e4umen.<\/p>\n<h3>Beispiel: Fakult\u00e4t einer Zahl<\/h3>\n<p>Die Fakult\u00e4t einer Zahl <span class=\"katex-eq\" data-katex-display=\"false\">n<\/span> ist <span class=\"katex-eq\" data-katex-display=\"false\">n!=n\\cdot(n-1)\\cdot(n-2) \\cdots 3 \\cdot2 \\cdot 1<\/span>. Diese Formulierung hat eine rekursive Struktur, die wir mathematisch wie folgt darstellen k\u00f6nnen:<\/p>\n<p style=\"text-align:center;\"><span class=\"katex-eq\" data-katex-display=\"false\">\n\\begin{array}{rl}\n\n0! &amp;=1\\\\\n\nn! &amp;= n\\cdot(n-1)!\\\\\n\n\\end{array}\n\n<\/span>\n<p>Unter Ber\u00fccksichtigung dessen k\u00f6nnen wir diese Funktion in C++ wie folgt programmieren:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n \r\nint fakultaet(int n) {\r\n    if (n == 0 || n == 1) {\r\n        return 1;\r\n    }\r\n    return n*fakultaet(n - 1);\r\n}\r\n \r\nint main() {\r\n    int zahl;\r\n    cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;; cin &gt;&gt; zahl;\r\n    cout &lt;&lt; &quot;Die Fakult\u00e4t von &quot; &lt;&lt; zahl &lt;&lt; &quot; ist &quot; &lt;&lt; fakultaet(zahl) &lt;&lt; endl;\r\n    return 0;\r\n}<\/pre>\n<p>In diesem Code:<\/p>\n<ul>\n<li>Die Funktion <code>fakultaet(n)<\/code> ruft sich selbst mit <code>n-1<\/code> auf, bis sie den Basisfall (<code>n == 0<\/code> oder <code>n == 1<\/code>) erreicht.<\/li>\n<li>Die Funktion wird rekursiv aufgel\u00f6st, indem die Werte multipliziert werden, bis das Ergebnis gefunden ist.<\/li>\n<\/ul>\n<h3>Beispiel: Fibonacci-Zahlen<\/h3>\n<p>Die Fibonacci-Zahlen sind diejenigen, die durch die Sequenz <span class=\"katex-eq\" data-katex-display=\"false\">1, 1, 2, 3, 5, 8, 13, \\cdots<\/span> dargestellt werden. Diese Sequenz zeichnet sich dadurch aus, dass jede Zahl gleich der Summe der beiden vorhergehenden ist.<\/p>\n<p>Mathematisch gilt: Wenn <span class=\"katex-eq\" data-katex-display=\"false\">fibo(n)<\/span> die Funktion ist, deren Ergebnisse die Fibonacci-Zahlen sind, dann hat sie die folgende mathematische Struktur:<\/p>\n<p style=\"text-align:center;\"><span class=\"katex-eq\" data-katex-display=\"false\">\n\\begin{array}{rl}\n\nfibo(0) &amp;= 1\\\\\n\nfibo(1) &amp;= 1 \\\\\n\nfibo(n) &amp;= fibo(n-1) + fibo(n-2)\n\n\\end{array}\n\n<\/span>\n<p>Ein Beispielcode in C++, der die Fibonacci-Zahlen zeigt, ist der folgende:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include&lt;iostream&gt;\r\n \r\nusing namespace std;\r\n \r\nint fibo(int zahl){\r\n    if (zahl==0||zahl==1){\r\n        return 1;\r\n        }\r\n    return fibo(zahl-1)+fibo(zahl-2);\r\n    }\r\n \r\nint main(){\r\n    int x=0, i=0;\r\n    cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;; cin &gt;&gt; x;\r\n     \r\n    while (i &lt; x){\r\n        cout &lt;&lt;&quot;Die Fibonacci-Zahl an Position &quot; &lt;&lt; i+1 &lt;&lt; &quot; ist: &quot; &lt;&lt; fibo(i)&lt;&lt;endl;\r\n        i=i+1;\r\n    }   \r\n}\r\n<\/pre>\n<\/section>\n<p><center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/EnMxDCHV1qg?si=4Y6oVAdNe9UeVDL5\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"6\"><\/a><\/p>\n<h2>Mehrfache R\u00fcckgabe in Funktionen<\/h2>\n<p>In C++ kann eine Funktion mehr als einen Wert zur\u00fcckgeben, indem Strukturen wie <code>std::pair<\/code>, <code>std::tuple<\/code> oder Referenzen auf Variablen verwendet werden.<\/p>\n<h3>Beispiel: Funktion, die zwei Werte mit <code>std::pair<\/code> zur\u00fcckgibt<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n#include &lt;utility&gt; \/\/ F\u00fcr die Verwendung von std::pair\r\nusing namespace std;\r\n \r\npair&lt;int, int&gt; teilen(int a, int b) {\r\n    return make_pair(a \/ b, a % b);\r\n}\r\n \r\nint main() {\r\n    int zaehler=0, nenner=1;\r\n     \r\n    cout &lt;&lt; &quot;Geben Sie den Z\u00e4hler ein: &quot;; cin &gt;&gt; zaehler;\r\n    cout &lt;&lt; &quot;Geben Sie den Nenner ein: &quot;; cin &gt;&gt; nenner;\r\n     \r\n    pair&lt;int, int&gt; ergebnis = teilen(zaehler, nenner);\r\n \r\n    cout &lt;&lt; &quot;Quotient: &quot; &lt;&lt; ergebnis.first &lt;&lt; endl;\r\n    cout &lt;&lt; &quot;Rest: &quot; &lt;&lt; ergebnis.second &lt;&lt; endl;\r\n \r\n    return 0;\r\n}\r\n<\/pre>\n<p>Hier gibt die Funktion <code>teilen()<\/code> zwei Werte zur\u00fcck: den Quotienten und den Rest einer Ganzzahldivision.<\/p>\n<h3>Beispiel: Funktion, die zwei Werte mit <code>std::tuple<\/code> zur\u00fcckgibt<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n#include &lt;tuple&gt;\r\nusing namespace std;\r\n\r\ntuple&lt;int, int, int&gt; operationen(int a, int b) {\r\n    return make_tuple(a + b, a - b, a * b);\r\n}\r\n\r\nint main() {\r\n    int summe=0, differenz=0, produkt=0;\r\n    int a=0, b=0;\r\n    \r\n    cout &lt;&lt; &quot;Geben Sie eine Zahl ein: &quot;; cin &gt;&gt; a;\r\n    \r\n    cout &lt;&lt; &quot;Geben Sie eine weitere Zahl ein: &quot;; cin &gt;&gt; b;\r\n    \r\n    std::tie(summe, differenz, produkt) = operationen(a, b);\r\n\r\n    cout &lt;&lt; &quot;Summe: &quot; &lt;&lt; summe &lt;&lt; &quot;, Differenz: &quot; &lt;&lt; differenz &lt;&lt; &quot;, Produkt: &quot; &lt;&lt; produkt &lt;&lt; endl;\r\n    return 0;\r\n}\r\n<\/pre>\n<\/section>\n<p><center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/UdkBf26gTew?si=RTadJpxFBQ2Uctzs\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"7\"><\/a><\/p>\n<h2>Funktions\u00fcberladung (Overloading)<\/h2>\n<p>Die Funktions\u00fcberladung erm\u00f6glicht es, mehrere Funktionen mit demselben Namen, aber unterschiedlichen Typen oder Mengen von Parametern zu definieren. Dies verbessert die Lesbarkeit und Wiederverwendbarkeit des Codes.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n#include &lt;string&gt; \/\/ Notwendig f\u00fcr std::string\r\n#include &lt;cmath&gt;\r\n\r\nusing namespace std;\r\n\r\n\/\/ Fl\u00e4che eines Quadrats oder Kreises (Figuren mit einem Wert)\r\ndouble flaeche(double seite) {\r\n    return seite * seite;\r\n}\r\n\r\n\/\/ Fl\u00e4che eines Rechtecks (oder Figuren mit zwei Werten)\r\ndouble flaeche(double basis, double hoehe) {\r\n    return basis * hoehe;\r\n}\r\n\/\/ Fl\u00e4che eines Dreiecks (oder Figuren mit drei Werten)\r\ndouble flaeche(double a, double b, double c){\r\n\treturn 0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c));\r\n}\r\n\r\nint main() {\r\n    string figur;\r\n    double ergebnis = 0;\r\n    double l1=0, l2=0, l3=0;\r\n\r\n    \/\/ Figur abfragen\r\n    cout &lt;&lt; &quot;Welche Figur ist es? (quadrat, kreis, rechteck oder dreieck): &quot;;\r\n    cin &gt;&gt; figur;\r\n\r\n    \/\/ Figur mit if-else auswerten\r\n    if (figur == &quot;quadrat&quot;) {\r\n        cout &lt;&lt; &quot;Wie lang ist die Seite? &quot;; cin &gt;&gt; l1;\r\n        ergebnis = flaeche(l1);\r\n        cout &lt;&lt; &quot;Die Fl\u00e4che des Quadrats betr\u00e4gt: &quot; &lt;&lt; ergebnis &lt;&lt; endl;\r\n    } \r\n    else if (figur == &quot;rechteck&quot;){\r\n        cout &lt;&lt; &quot;Wie lang ist die Basis? &quot;; cin &gt;&gt; l1;\r\n        cout &lt;&lt; &quot;Wie hoch ist es? &quot;;cin &gt;&gt; l2;\r\n        ergebnis = flaeche(l1, l2);\r\n        cout &lt;&lt; &quot;Die Fl\u00e4che des Rechtecks betr\u00e4gt: &quot; &lt;&lt; ergebnis &lt;&lt; endl;\r\n    } \r\n    else if (figur == &quot;kreis&quot;) {\r\n\t\tl1 = 3.141592653;\r\n        cout &lt;&lt; &quot;Wie gro\u00df ist der Radius? &quot;; cin &gt;&gt; l2;\r\n        ergebnis = flaeche(l1, l2);\r\n        cout &lt;&lt; &quot;Die Fl\u00e4che des Kreises betr\u00e4gt: &quot; &lt;&lt; ergebnis &lt;&lt; endl;\r\n    } \r\n    else if (figur == &quot;dreieck&quot;){\r\n    \tcout &lt;&lt; &quot;Wie lang sind seine Seiten?&quot; &lt;&lt; endl;\r\n    \tcout &lt;&lt; &quot;Seite 1: &quot;; cin &gt;&gt; l1;\r\n\t\tcout &lt;&lt; &quot;Seite 2: &quot;; cin &gt;&gt; l2;\r\n\t\tcout &lt;&lt; &quot;Seite 3: &quot;; cin &gt;&gt; l3;\r\n\t\t\t\r\n\t\tif ((l1+l2+l3)*(l1+l2-l3)*(l1-l2+l3)*(-l1+l2+l3)&lt;0){\r\n\t\t\tcout &lt;&lt; &quot;Das Dreieck ist unm\u00f6glich&quot;;\r\n\t\t}\t\r\n\t\telse {\r\n\t\t\tergebnis = flaeche(l1,l2,l3);\r\n\t\t\tcout &lt;&lt; &quot;Die Fl\u00e4che des Dreiecks betr\u00e4gt: &quot; &lt;&lt; ergebnis &lt;&lt; endl;\r\n\t\t} \t\t\t\r\n\t}\r\n    else {\r\n        cout &lt;&lt; &quot;Ung\u00fcltige Figur.&quot; &lt;&lt; endl;\r\n    }\r\n    return 0;\r\n}<\/pre>\n<\/section>\n<p><center><iframe class=\"lazyload\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/0vzQFAXjqbg?si=ckRolBE3n0I5QPPp\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center><\/p>\n<section><a name=\"8\"><\/a><\/p>\n<h2>Inline-Funktionen in C++<\/h2>\n<p>Die <code>inline<\/code>-Funktionen in C++ bieten einen Mechanismus zur Optimierung der Programmausf\u00fchrung, indem sie die \u00dcberlastung durch Funktionsaufrufe reduzieren. Anstatt einen herk\u00f6mmlichen Aufruf auszuf\u00fchren, versucht der Compiler, den Code der Funktion direkt an jeder Stelle einzuf\u00fcgen, an der sie aufgerufen wird.<\/p>\n<h3>Syntax einer Inline-Funktion<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ninline rueckgabetyp funktionsname(parameterliste) {\r\n    \/\/ Funktionsk\u00f6rper\r\n    return wert; \/\/ falls notwendig\r\n}<\/pre>\n<p>Durch die Verwendung von <code>inline<\/code> entf\u00e4llt die Notwendigkeit, zu einer anderen Speicheradresse zu springen, um die Funktion auszuf\u00fchren, was die Laufzeit verk\u00fcrzen kann.<\/p>\n<h3>Unterschiede zwischen einer Inline-Funktion und einer herk\u00f6mmlichen Funktion<\/h3>\n<table>\n<tr>\n<th style=\"width: 20%;\"><strong>Merkmal<\/strong><\/th>\n<th><strong>Herk\u00f6mmliche Funktion<\/strong><\/th>\n<th><strong>Inline-Funktion<\/strong><\/th>\n<\/tr>\n<tr>\n<td><strong>Funktionsaufruf<\/strong><\/td>\n<td>Es wird ein Aufruf mit einem Sprung in der Ausf\u00fchrung durchgef\u00fchrt.<\/td>\n<td>Der Code wird direkt an der Stelle eingef\u00fcgt, an der er verwendet wird.<\/td>\n<\/tr>\n<tr>\n<td><strong>Laufzeit<\/strong><\/td>\n<td>Kann aufgrund der \u00dcberlastung durch den Aufruf langsamer sein.<\/td>\n<td>Kann bei kleinen Funktionen schneller sein.<\/td>\n<\/tr>\n<tr>\n<td><strong>Speichernutzung<\/strong><\/td>\n<td>Es wird nur eine einzige Kopie der Funktion im Speicher gespeichert.<\/td>\n<td>Kann die Bin\u00e4rgr\u00f6\u00dfe erh\u00f6hen, wenn die Funktion viele Male verwendet wird.<\/td>\n<\/tr>\n<\/table>\n<h3>Beispiel einer <code>inline<\/code>-Funktion<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\nusing namespace std;\r\n\r\ninline int quadrat(int x) {\r\n    return x * x;\r\n}\r\n\r\nint main() {\r\n    cout &lt;&lt; &quot;Das Quadrat von 5 ist: &quot; &lt;&lt; quadrat(5) &lt;&lt; endl;\r\n    return 0;\r\n}\r\n<\/pre>\n<p><strong>\ud83d\udd0d Prozess des Compilers:<\/strong><\/p>\n<ol>\n<li>Der Compiler ersetzt den Aufruf <code>quadrat(5)<\/code> direkt durch <code>5 * 5<\/code>.<\/li>\n<li>Es gibt keinen Ausf\u00fchrungssprung.<\/li>\n<li>Die Berechnung wird in derselben Zeile durchgef\u00fchrt, in der die Funktion aufgerufen wurde.<\/li>\n<\/ol>\n<h3>Vorteile und Nachteile von <code>inline<\/code><\/h3>\n<p><strong>\u2705 Vorteile<\/strong><\/p>\n<ul>\n<li><strong>Eliminiert die \u00dcberlastung von Funktionsaufrufen:<\/strong> Reduziert die Laufzeit bei kurzen und h\u00e4ufig aufgerufenen Funktionen.<\/li>\n<li><strong>Erleichtert die Optimierung durch den Compiler:<\/strong> Kann die Leistung verbessern, indem die Verwendung von CPU-Registern und des Stacks vermieden wird.<\/li>\n<li><strong>Stellt sicher, dass der Funktionscode zur Kompilierzeit verf\u00fcgbar ist.<\/strong><\/li>\n<\/ul>\n<p><strong>\u274c Nachteile<\/strong><\/p>\n<ul>\n<li><strong>Erh\u00f6ht die Bin\u00e4rgr\u00f6\u00dfe:<\/strong> Wenn die <code>inline<\/code>-Funktion in einem gro\u00dfen Programm h\u00e4ufig verwendet wird, wird der Code an jedem Aufrufpunkt dupliziert. Dies geschieht, wenn sie in langen oder sehr oft genutzten Funktionen eingesetzt wird.<\/li>\n<li><strong>Garantiert nicht immer eine Inline-Erweiterung:<\/strong> Der Compiler kann die Anweisung <code>inline<\/code> ignorieren, wenn er sie nicht f\u00fcr optimal h\u00e4lt.<\/li>\n<\/ul>\n<\/section>\n<footer><a name=\"9\"><\/a><\/p>\n<h2>Abschlie\u00dfende Reflexion \u00fcber Funktionen in C++<\/h2>\n<p>Funktionen in C++ sind ein wesentliches Werkzeug, um modularen, wiederverwendbaren und leicht wartbaren Code zu schreiben. In dieser Lektion haben wir von den Grundlagen der Deklaration, des Aufrufs und der Definition bis hin zu fortgeschritteneren Techniken wie der Weitergabe von R\u00fcckgabewerten, der Rekursion, der \u00dcberladung und der Verwendung von <code>inline<\/code>-Funktionen alles behandelt. Wir haben auch verschiedene Strategien zur Organisation des Codes verglichen und er\u00f6rtert, wie man je nach Kontext die beste ausw\u00e4hlt.<\/p>\n<p>Das richtige Verst\u00e4ndnis und die korrekte Anwendung von Funktionen machen deinen Code nicht nur klarer und effizienter, sondern erm\u00f6glichen es dir auch, komplexere Probleme mit gut strukturierten L\u00f6sungen anzugehen. Du hast nun die Grundlagen, um Programme in C++ mit einem professionelleren und skalierbareren Ansatz zu entwickeln. Der beste Weg, dieses Wissen zu festigen, ist das \u00dcben. Deshalb ermutige ich dich, mit verschiedenen Arten von Funktionen zu experimentieren und sie in deinen eigenen Projekten anzuwenden. Erkunde weiter und bringe deine C++-F\u00e4higkeiten auf die n\u00e4chste Stufe!<\/p>\n<\/footer>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Funktionen in C++ Funktionen in C++: Das Schl\u00fcsselelement f\u00fcr klaren und wiederverwendbaren Code Hast du bemerkt, dass der Code eines Programms mit zunehmender Gr\u00f6\u00dfe schwieriger zu verstehen und zu warten ist? Wenn du jemals das Gef\u00fchl hattest, dass dein Code wie ein verworrenes Labyrinth wirkt, dann liegt das daran, dass du die Funktionen in C++ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":31365,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":62,"footnotes":""},"categories":[1204,1216],"tags":[],"class_list":["post-34899","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik-und-computerwissenschaft","category-programmierung-in-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Funktionen in C++ - toposuranos.com\/material<\/title>\n<meta name=\"description\" content=\"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Funktionen in C++\" \/>\n<meta property=\"og:description\" content=\"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"toposuranos.com\/material\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/groups\/toposuranos\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-04T13:00:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-21T09:54:18+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c-1024x585.jpg\" \/>\n<meta name=\"author\" content=\"giorgio.reveco\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Funktionen in C++\" \/>\n<meta name=\"twitter:description\" content=\"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@topuranos\" \/>\n<meta name=\"twitter:site\" content=\"@topuranos\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"giorgio.reveco\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\"},\"author\":{\"name\":\"giorgio.reveco\",\"@id\":\"https:\/\/toposuranos.com\/material\/#\/schema\/person\/e15164361c3f9a2a02cf6c234cf7fdc1\"},\"headline\":\"Funktionen in C++\",\"datePublished\":\"2025-02-04T13:00:12+00:00\",\"dateModified\":\"2025-09-21T09:54:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\"},\"wordCount\":3879,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/toposuranos.com\/material\/#organization\"},\"image\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg\",\"articleSection\":[\"Informatik und Computerwissenschaft\",\"Programmierung in C++\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\",\"url\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\",\"name\":\"Funktionen in C++ - toposuranos.com\/material\",\"isPartOf\":{\"@id\":\"https:\/\/toposuranos.com\/material\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg\",\"datePublished\":\"2025-02-04T13:00:12+00:00\",\"dateModified\":\"2025-09-21T09:54:18+00:00\",\"description\":\"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.\",\"breadcrumb\":{\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage\",\"url\":\"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg\",\"contentUrl\":\"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg\",\"width\":1792,\"height\":1024,\"caption\":\"toposuranos.com\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/toposuranos.com\/material\/es\/cursos-de-matematica-y-fisica\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Funktionen in C++\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/toposuranos.com\/material\/#website\",\"url\":\"https:\/\/toposuranos.com\/material\/\",\"name\":\"toposuranos.com\/material\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/toposuranos.com\/material\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/toposuranos.com\/material\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/toposuranos.com\/material\/#organization\",\"name\":\"toposuranos.com\/material\",\"url\":\"https:\/\/toposuranos.com\/material\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/toposuranos.com\/material\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/logo.png\",\"contentUrl\":\"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/logo.png\",\"width\":2400,\"height\":2059,\"caption\":\"toposuranos.com\/material\"},\"image\":{\"@id\":\"https:\/\/toposuranos.com\/material\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/groups\/toposuranos\",\"https:\/\/x.com\/topuranos\",\"https:\/\/www.youtube.com\/channel\/UC16yDm12cPcrwsE0fAM7X1g\",\"https:\/\/www.linkedin.com\/company\/69429190\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/toposuranos.com\/material\/#\/schema\/person\/e15164361c3f9a2a02cf6c234cf7fdc1\",\"name\":\"giorgio.reveco\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/toposuranos.com\/material\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/1694478625378-96x96.jpeg\",\"contentUrl\":\"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/1694478625378-96x96.jpeg\",\"caption\":\"giorgio.reveco\"},\"description\":\"Soy Licenciado en F\u00edsica, Magister en Ingenier\u00eda Industrial y Docente Universitario. Me dedico a desmitificar la f\u00edsica y las matem\u00e1ticas. Mi objetivo es hacer que estos campos sean f\u00e1cilmente comprensibles para todos, proporcionando las herramientas para explorar no solo el mundo que nos rodea, sino tambi\u00e9n las profundidades de nuestra propia existencia y el orden natural que nos conecta con el cosmos.\",\"sameAs\":[\"http:\/\/toposuranos.com\/material\"],\"url\":\"https:\/\/toposuranos.com\/material\/author\/giorgio-reveco\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Funktionen in C++ - toposuranos.com\/material","description":"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/","og_locale":"es_ES","og_type":"article","og_title":"Funktionen in C++","og_description":"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.","og_url":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/","og_site_name":"toposuranos.com\/material","article_publisher":"https:\/\/www.facebook.com\/groups\/toposuranos","article_published_time":"2025-02-04T13:00:12+00:00","article_modified_time":"2025-09-21T09:54:18+00:00","og_image":[{"url":"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c-1024x585.jpg","type":"","width":"","height":""}],"author":"giorgio.reveco","twitter_card":"summary_large_image","twitter_title":"Funktionen in C++","twitter_description":"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.","twitter_image":"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg","twitter_creator":"@topuranos","twitter_site":"@topuranos","twitter_misc":{"Escrito por":"giorgio.reveco","Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#article","isPartOf":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/"},"author":{"name":"giorgio.reveco","@id":"https:\/\/toposuranos.com\/material\/#\/schema\/person\/e15164361c3f9a2a02cf6c234cf7fdc1"},"headline":"Funktionen in C++","datePublished":"2025-02-04T13:00:12+00:00","dateModified":"2025-09-21T09:54:18+00:00","mainEntityOfPage":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/"},"wordCount":3879,"commentCount":0,"publisher":{"@id":"https:\/\/toposuranos.com\/material\/#organization"},"image":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage"},"thumbnailUrl":"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg","articleSection":["Informatik und Computerwissenschaft","Programmierung in C++"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/","url":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/","name":"Funktionen in C++ - toposuranos.com\/material","isPartOf":{"@id":"https:\/\/toposuranos.com\/material\/#website"},"primaryImageOfPage":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage"},"image":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage"},"thumbnailUrl":"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg","datePublished":"2025-02-04T13:00:12+00:00","dateModified":"2025-09-21T09:54:18+00:00","description":"Lerne, Funktionen in C++ effizient zu verwenden, sie zu deklarieren, aufzurufen und zu definieren, mit praktischen Beispielen, wobei Konzepte wie R\u00fcckgabewerte, \u00dcberladung, Rekursion und Inline-Funktionen behandelt werden.","breadcrumb":{"@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#primaryimage","url":"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg","contentUrl":"https:\/\/toposuranos.com\/material\/wp-content\/uploads\/2025\/02\/funciones-en-c.jpg","width":1792,"height":1024,"caption":"toposuranos.com"},{"@type":"BreadcrumbList","@id":"https:\/\/toposuranos.com\/material\/de\/funktionen-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/toposuranos.com\/material\/es\/cursos-de-matematica-y-fisica\/"},{"@type":"ListItem","position":2,"name":"Funktionen in C++"}]},{"@type":"WebSite","@id":"https:\/\/toposuranos.com\/material\/#website","url":"https:\/\/toposuranos.com\/material\/","name":"toposuranos.com\/material","description":"","publisher":{"@id":"https:\/\/toposuranos.com\/material\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/toposuranos.com\/material\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/toposuranos.com\/material\/#organization","name":"toposuranos.com\/material","url":"https:\/\/toposuranos.com\/material\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/toposuranos.com\/material\/#\/schema\/logo\/image\/","url":"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/logo.png","contentUrl":"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/logo.png","width":2400,"height":2059,"caption":"toposuranos.com\/material"},"image":{"@id":"https:\/\/toposuranos.com\/material\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/groups\/toposuranos","https:\/\/x.com\/topuranos","https:\/\/www.youtube.com\/channel\/UC16yDm12cPcrwsE0fAM7X1g","https:\/\/www.linkedin.com\/company\/69429190"]},{"@type":"Person","@id":"https:\/\/toposuranos.com\/material\/#\/schema\/person\/e15164361c3f9a2a02cf6c234cf7fdc1","name":"giorgio.reveco","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/toposuranos.com\/material\/#\/schema\/person\/image\/","url":"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/1694478625378-96x96.jpeg","contentUrl":"http:\/\/toposuranos.com\/material\/wp-content\/uploads\/2023\/10\/1694478625378-96x96.jpeg","caption":"giorgio.reveco"},"description":"Soy Licenciado en F\u00edsica, Magister en Ingenier\u00eda Industrial y Docente Universitario. Me dedico a desmitificar la f\u00edsica y las matem\u00e1ticas. Mi objetivo es hacer que estos campos sean f\u00e1cilmente comprensibles para todos, proporcionando las herramientas para explorar no solo el mundo que nos rodea, sino tambi\u00e9n las profundidades de nuestra propia existencia y el orden natural que nos conecta con el cosmos.","sameAs":["http:\/\/toposuranos.com\/material"],"url":"https:\/\/toposuranos.com\/material\/author\/giorgio-reveco\/"}]}},"_links":{"self":[{"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/posts\/34899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/comments?post=34899"}],"version-history":[{"count":0,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/posts\/34899\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/media\/31365"}],"wp:attachment":[{"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/media?parent=34899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/categories?post=34899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/toposuranos.com\/material\/wp-json\/wp\/v2\/tags?post=34899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}