Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C++] Fragen zu "Funktions-Prototyp"

Empfohlene Antworten

Veröffentlicht

Guten Abend,

ich bin gerade dabei mir die Grundlagen von C++ anzueignen (Buch C++ von A bis Z).

Als IDE nutze ich Visual Studio, achte aber darauf das ich nicht aufs .NET Framework zugreife. Sprich Projekttyp Win32 Consolenapp.

Jetzt steht in dem Buch das ich bevor ich Funktion benutzen kann erst ihren Funktions-Prototypen (Deklaration) schreiben muss.

Bsp.:


//Funktions-Prototyp

int checkPoint(int xPos, int yPos);


// Funktionsdefinition

int checkPoint(int xPos, int yPos)

{

//Anweisung

}

Das war mir bisher völlig fremd, da ich es auch ohne diesen Ominösen Funktionsprotoyp gemacht habe.

Da nichts genaueres dazu gesagt wurde wollte ich fragen, warum man das machen sollte, wenn es auch ohne geht?

Lg

Gateway

Das scheint ein bisschen komisch beschrieben zu sein in dem Buch, bzw. du hast was überlesen.

Die erste hälfte des Code kommt in die Headerdatei deines Programms, also beispielsweise "Unit1.h". Die zweite hälfte ist deine eigentliche Funktion, die in die .cpp-Datei geschrieben und bei Funktionsaufruf ausgeführt wird.

Der Zweck der ganzen Sache ist, dass man bei größeren Projekten gerne mit mehreren Units arbeitet, um eine bessere Strukturierung zu bekommen. Da die Units, würden sie nur aus .cpp's bestehen, nicht aufeinander zugreifen könnten, benötigt man die Header-Dateien. Diese werden in den anderen Units eingebunden und liefern damit dem Rest des Programms die Information, welche Funktion wie aufgerufen werden kann. Dafür benötigst du den Funktionstyp (int, void, float...), den Funktionsnamen und Parameter, sprich den Teil //Funktions-Prototyp.

Der Begriff des Prototypen stammt eigentlich aus C. Ein Prototyp ist in C die Deklaration einer Funktion, bei der die Funktionsparameter mit deklariert werden (denn die kann man in C89 auch weglassen). In C++ darf man die Parametertypen bei einer Funktionsdeklaration gar nicht weglassen, daher ist die Unterscheidung zwischen Funktionsdeklaration und Funktionsprototyp in C++ sinnlos, weil jede Funktionsdeklaration in C++ ein Prototyp im Sinne von C ist.

In C++ muss eine Funktion deklariert sein, bevor man sie aufrufen kann. In deinem Beispiel ist kein Aufruf der Funktion checkPoint vorhanden, insofern hat der Beispielcode nichts mit diesem Sprachfeature zu tun.

Du musst eine Funktion nicht deklarieren, bevor du sie definieren kannst. In der Definition steckt die Deklaration mit drin.

  • Autor

Vielen Dank euch beiden.

@Klotzkopp:

Das mit dem Hinweis auf C scheint mir hier der Fall zu sein, da der Autor die Themen kurioser weise sehr ineinander verfließen lässt.

D.h. dieser verweist auch öfters auf C und die dortige Ausführungweise der momentanen Thematik.

lg

Gateway

Naja, Du kannst die Files mit den Funktionsdeklarationen auch als eine Art Referenz sehen. In der Regel kommen die in eine $Header.h und die kann man auch unkompiliert mitausliefern. So kann der Entwickler, der Deine Funktionen(Klassenbibliotheken) benutzen/erlernen will, nachgucken, was da als Aufrufparameter so alles mitgegebenwerden kann. Die eigentlichen Funktionen sollen ihn nicht interessieren.

Die werden lediglich binär mitgeschickt, weil ja gegen die gelinkt werden soll.

So hast Du a) eine saubere Trennung zwischen Funktionsdeklaration (für den Überblick) und der Funktionsdefinition (die niemanden etwas angeht); was aufgrund der Kapselung unter C++ schon dreimal sinnvoll ist und B) kannst Du so kommerziell Deine Objektdateien anbieten, ohne daß Dir jemand "ohne Weiteres" Deine Funktionen klaut (RE mal außen vor).

Wenn Du es wirklich sauber hälst, hast Du immer eine genau eine Klassendatei .h und die zugehörige Definitionsdatei .cpp.

  • 2 Wochen später...

@klotzkopp:

Genau so hat man uns das in der BS auch erklärt.

Vl. als "besseren" (und auch teureren) Buchtipp hab ich "C++ - lernen und professionell anwenden". Der Preis liegt um die 44€, aber dafür ist es auch sehr gründlich und leicht verständlich erklärt + mit Bsp. und Lösungen unterlegt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.