Hallo, ich hoffe ihr könnt mir weiterhelfen. Ich programmiere normalerweise C#, manchmal auch Java und habe noch nie etwas in C++ gemacht, in C auch nur was für die Uni nötig war (Sysprog, Übersetzerbau), also bitte um Nachsicht.
Ich beginne gerade ein kleines Programm in C++ und wüsste gerne, ob ich einige Dinge richtig verstanden habe und was da sozusagen Best Practise ist.
Neues Objekt erzeugen
Hier wird der Speicher automatisch freigegeben, wenn der Scope verlassen wird?
Auf Methoden greift man hier mit . zu?
Hier wird der Speicher nicht automatisch freigegeben, sondern mit delete?
Auf Methoden greift man hier mit -> zu?
Welche der beiden Möglichkeiten verwendet man üblicherweise?
Und wie sieht das aus, wenn ich in einer Klasse als Eigenschaft ein Objekt einer anderen Klasse habe, also in Java etwa so:
class TestA
{
private TestB testB;
public TestB getTestB() { return testB; }
public void setTestB(TestB val) { testB = val; }
}
Wie würde man diese Klasse in C++ schreiben?
So (vereinfacht: Headerfile und so):
class TestA
{
private TestB testB;
public TestB getTestB() { return testB; }
public void setTestB(TestB val) { testB = val; }
}
oder so:
class TestA
{
private TestB *testB = new TestB();
public TestB* getTestB() { return testB; }
public void setTestB(TestB *val) { testB = val; }
}
Übergabe von Objekten als Parameter an Funktionen
Wenn ich das richtig verstanden habe, wird hier eine Kopie des Objekts übergeben?
Und hier wird eine Referenz auf das Objekt übergeben?
Welche von beiden Möglichkeiten verwendet man "im Normalfall"?