C++ lernen anhand eines Beispiels, Fragen

Gast #2748380
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.
Gast #2748390
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.
#2748408
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
Gast #2748414
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.
Gast #2749473
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren