[Hilfe] smart pointer

netrobot

Erfahrenes Mitglied
1. wann wird smart pointer verwendet, ich brauche ein fehlprogramm ohne smart pointer, und eine korrektur mit smart pointer.

2. wenn in C++ nur referenz zum einsatz kommt, wieso benutzt man immer noch pointer in C -style?
 
2. wenn in C++ nur referenz zum einsatz kommt, wieso benutzt man immer noch pointer in C -style?

In c++ werden nicht ausschließlich nur Referenzen verwendet...

Bsp.:

Code:
class Complex{

        double real;
        double im;

        Bruch(double r, double i):real(r), im(i){}

}

Wenn du dir nun ein Objekt mittels

Code:
Complex c(1.5, 2);
beschaffst ist das keine Referenz sondern ein Objekt, was auf dem Stack abgelegt wird...
Dieses Objekt wird automatisch wieder gelöscht wenn der Gültigkeitsbereich verlassen wird,
und es wird an Methoden immer per call by value übergeben solange die Methoden
folgendermassen deklariert sind:

Code:
Complex add(Complex c);

Wenn du nun
Code:
Complex result = c.add(c);
sagst wird das Objekt c call by value übergeben
(Der Copykonstruktor wird automatisch aufgerufen)

Wenn du aber die Methode add folgendermaßen deklarierst
Code:
Complex& add(Complex& c);
Code:
Complex result = c.add(c);
nun wird das Objekt c per call by reference übergeben

Eine Referenz auf dem Heap auf ein Objekt kann in C++ ausschließlich nur über den
Operator new erschaffen werden...

Gruß

RedWing
 
Zurück