Forum: PC-Programmierung C++ lernen anhand eines Beispiels, Fragen


von Rolf (Gast)


Lesenswert?

Ich arbeite mich gerade in C++ ein anhand eines Beispiels. Nun meine 
erste Frage: Was bedeutet dieser Code:

Datenbank_Interface * pDbIf = create_DB_STLVektor();

Wie ich es bisher verstehe:
Datenbank_Interface ist eine Klasse
pDbIf ist ein Objekt der Klasse

Meine Fragen:
Was soll der *? Irgendwas mit Zeigern?
Was das "= create_DB_STLVektor();" soll, verstehe ich auch nicht.

von Peter II (Gast)


Lesenswert?

Rolf schrieb:
> Ich arbeite mich gerade in C++ ein anhand eines Beispiels. Nun meine
> erste Frage: Was bedeutet dieser Code:
an Beispielen zu lernen ist der falsche weg - du musst mit den 
Grundlagen anfangen!

> Datenbank_Interface * pDbIf = create_DB_STLVektor();


dann sollte man einfach erkennen das create_DB_STLVektor eine funktion 
ist die etwas zurückgibt. Vermutlich ein zeiger auf eine instanz von 
Datenbank_Interface.

Und ja der * hat etwas mit zeiger zu tun, aber das sind Grundlagen die 
man wissen sollte.

von Rolf (Gast)


Lesenswert?

Peter II schrieb:
> an Beispielen zu lernen ist der falsche weg - du musst mit den
> Grundlagen anfangen!

Ich kombiniere das: Zum Einen lernen ich nach http://ladedu.com/cpp/ die 
Grundlagen. Zum Anderen schaue ich mir zur Abwechslung Beispiele an, die 
ich verstehen möchte.

von Albrecht H. (alieninside)


Lesenswert?

Datenbank_Interface * pDbIf

definiert einen Pointer namens "pDbIf", der nachher auf ein Objekt 
("Objekt-Variable") vom Typ "Datenbank_Interface" zeigt.

mit der Funktion

= create_DB_STLVektor()

wird der Pointer "pDbIf" auch gleich initialisiert, 
"create_DB_STLVektor()" gibt also eine Adresse zurück die auf ein, 
vermutlich neu erzeugtes, Objekt vom Typ "Datenbank_Interface" zeigt.


... falls ich mich irre wirds sicher gleich jemand richtig stellen

von Rolf (Gast)


Lesenswert?

Peter II schrieb:
> dann sollte man einfach erkennen das create_DB_STLVektor eine funktion
> ist die etwas zurückgibt. Vermutlich ein zeiger auf eine instanz von
> Datenbank_Interface.

Dass Funktionen einen Rückgabewert haben, den man einer Variablen 
zuweisen kann, ist mir bekannt. Aber dass man den Rückgabewert dem 
Zeiger einer Instanz einer Klasse zuweisen kann, ist mir neu.

von Rolf Magnus (Gast)


Lesenswert?

Rolf schrieb:
> Datenbank_Interface * pDbIf = create_DB_STLVektor();
>
> Wie ich es bisher verstehe:
> Datenbank_Interface ist eine Klasse

Es ist wohl ein Datentyp - vermutlich eine Klasse.

> pDbIf ist ein Objekt der Klasse

Es ist ein Zeiger auf diesen Typ. In ihm kann ich die Adresse eines 
Objekts speichern.

> Meine Fragen:
> Was soll der *? Irgendwas mit Zeigern?

Ja. Es macht pDbIf zu einem Zeiger.

> Was das "= create_DB_STLVektor();" soll, verstehe ich auch nicht.

die Funktion create_DB_STLVektor() wird aufgerufen und der Zeiger wird 
mit dessen Rückgabewert initialisiert (nicht zugewiesen).

Rolf schrieb:
> Dass Funktionen einen Rückgabewert haben, den man einer Variablen
> zuweisen kann, ist mir bekannt. Aber dass man den Rückgabewert dem
> Zeiger einer Instanz einer Klasse zuweisen kann, ist mir neu.

Was meinst du mit "Zeiger einer Instanz einer Klasse"? In deinem 
Beispiel kommt nirgends eine Instanz einer Klasse vor. Und warum sollte 
man einem Zeiger nicht den Rückgabewert einer Funktion zuweisen können? 
Der Zeiger ist auch nur eine Variable wie jede andere.
Das sind aber absolute Grundlagen. Stehen die in deinem Buch nicht 
ausführlich erklärt? Dann solltest du es wegwerfen und ein besseres 
kaufen. Und nein, ohne Buch (oder gutes Tutorial) kann man C++ nicht 
vernünftig lernen. Glaub mir, ich hab's lange versucht - viel zu lange.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.