int i = a.getB().getA();
geht allerdings.
Maximilian schrieb:
> Das temporäre Objekt lebt solange, wie die Referenz lebt.
genau das hätte ich erwartet.
Das in A::getB beim Return eine Kopie gemacht wird die Referenz
gespeichert wird.
angenommen der Copy-C'tor wäre nicht private, dann hätte ich folgendes
erwartet:
2 Copy-C'tor Aufrufe
- einen beim Return in der Klasse B
- einen bei der Initialisierung von b im aufrufenden Code
1 Copy-C'tor Aufruf
- einen beim Return in der Klasse B
Entsprechend dieser Annahmen hätte es mit dem private Copy-C'tor im
zweiten Fall klappen sollen.
Beide Fälle scheinen aber identisch (wenn man jetzt mal Polymorphie aus
dem Spiel lässt) und komplett anders als gedacht behandelt zu werden .
wohingegen
1 | int i = a.getB().getA();
|
wie angenommen zu funktionieren scheint.
hier geschieht ein Copy-C'tor-Aufruf, der auch mit privatem copy c'tor
funktioniert.
Rolf Magnus schrieb:
> Etwas vereinfacht, aber im Prinzip richtig. Hier das ganze in
> Standard-Sprech:
das bezieht sich doch aber auf Vererbungsbeziehungen und Polymorphie .