C++ Java->C++ Umsteiger braucht ein paar Basisinfo´s

Ghost_Rider_R

Bisher: Ruff_Ryders_R
Lt. Junior Grade
Dabei seit
Nov. 2009
Beiträge
411
Hallo miteinander,
da ich mich nun seit ca. 1,5 Jahren regelmäßig in der Schule mit Java beschäftigt habe und denke ich doch die meisten Grundthemen abgehandelt habe möchte ich mich mal in C++ versuchen, jedoch scheitere ich gleich zu beginn.

Die Syntax ist ja teilweise recht ähnlich, jedoch habe ich da noch ein paar sachen nicht so recht raus.
Vielleicht könnt ihr mir die punkte hier einzeln erklären:

Punkt 1:

Wie funktioniert das mit nem Konstruktor?

In Java:

public Klassenname(int zahl1, String zahl2){
this.zahl1 = zahl1;
this.zahl2 = zahl2;
}

und in C++?

Punkt 2:

Wie funktioniert das mit dem erstellen einer Klasse?
In netbeans leg ich eine Klasse im Projekt an und schreibe

Person peter = new Person(35, M, Peter, Heinzelmann);

und eine Methode davon rufe ich auf mit:

int alter = peter.getAlter();

wie geht das in C++?

Punkt 3:

Wie funktioniert das mit Klassen erstellen bei einer GUI?
In Netbeans klick ich doppelt auf einen Button und kann meinen Quelltext dahinter legen.

Und in C++?

Punkt 4:
Wie bekomm ich meine GUI überhaupt zum starten?!

Ich hab eine Mainmethode geschrieben die auch gestartet wird (nur eine einfache Klasse)

Dann dachte ich dran dass ich darin die GUI klasse erstelle und diese sichtbar mach, wie in Java eben aber geht nicht.
Wie funktioniert sowas?

Da im im Netz leider nicht so richtig schlau werde, hoffe ich auf eure Hilfe.

Vielen Dank
Ruff :-)

PS. Dienen soll Visual Studio
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.585
Ohne Durchlesen von Tutorials kommst du in C++ nicht weit. Allein für die Zeigerthematik musst du reinschauen und kannst nicht blindlinks ohne zu wissen was du machst mal eben ein Programm schreiben. Kann schon, nur wird es dann wohl extrem viele Speicherlecks geben. Syntaktische Unterschiede gibts dagegen zwischen C-ähnlichen Sprachen nicht bzw. kaum.
 

UltiSalamander

Lieutenant
Dabei seit
März 2010
Beiträge
536
Punkt 1:
Code:
public: //alles hier drunter ist public
Klassenname(int zahl1, std::string zahl2) {
this->zahl1 = zahl1;
this->zahl2 = zahl2;
}
(Hau mich wenn es nicht 100%ig korrekt sein sollte, ist etwas her dass ich in C++ programmiert habe.)

Punkt 2:
Kurz und gut: http://www.cplusplus.com/doc/tutorial/classes/
(Die Seite ist sehr empfehlenswert, hat mir bislang immer weitergeholfen!)

Punkt 3: Dazu kann ich nichts sagen, da dass doch sehr Visual Studio spezifisch ist.

Punkt 4: Das kommt ganz darauf an, welche Bibliotheken du für die GUI verwendest. Soll es ein WinAPI Programm werden, dann musst du statt der normalen main eine int WinMain() verwenden. Aber da VS auch .NET verwendet, gibt es da bestimmt auch andere Möglichkeiten. Nimmt dir das VS nicht ab, wenn du ein neues Projekt startest, und ein GUI Projekt auswählt? Ich habe GUIs immer mit WxWidgets programmiert (eine plattformunabhängige GUI Bibliothek), da war das quasi so wie unter Java. Aber wie gesagt, das ist von Lib zu Lib unterschiedlich, C++ hat keinen einheitlichen GUI Standard. :)


PS: Ich schließe mich Yuuri an, dass vor allem ein Tutorial zu Zeigern (und damit einhergehend Speichermanagement) für den Anfang sehr wichtig ist. Empfehlen kann ich hier wieder: http://www.cplusplus.com/doc/tutorial/

PPS: C++ ist, im Gegensatz zu Java, schon sehr komplex. Lass dich nicht am Anfang von der Featurevielfalt erschlagen, das Verständnis kommt da mit der Zeit von nach und nach von selbst.
 
Zuletzt bearbeitet:

antred

Lt. Commander
Dabei seit
Juni 2010
Beiträge
1.288
Punkt 1:
Code:
public: //alles hier drunter ist public
Klassenname(int zahl1, std::string zahl2) {
this->zahl1 = zahl1;
this->zahl2 = zahl2;
}
(Hau mich wenn es nicht 100%ig korrekt sein sollte, ist etwas her dass ich in C++ programmiert habe.)
Es nicht direkt falsch, aber besser wäre es, immer Initialsierungslisten zu nutzen. Also lieber ...

Code:
class Klassenname
{
public:
	Klassenname( int zahl1, const std::string& zahl2 ) : m_zahl1( zahl1 ), m_zahl2( zahl2 ) 
	{
		// Im Rumpf gibt's hier nix mehr zu tun, da wir das schon über unsere Initialsierungsliste erledigt haben.
	}
	
private:
	int m_zahl1;
	std::string m_zahl2;
};

P.S. Warum bricht der Code-Editor denn die Zeilen so besch****** um?
 
Top