-1
Ich habe Klasse:Design-Muster für Methoden, die Objekt und NRVO Rückkehr
class A{
public:
A(int v){
this->v=new int;
*(this->v)=v;
}
~A(){
delete v;
}
A add(A &a, A &b){
A res(0);
*(res.v)=*(a.v)+*(b.v)+*v;
return res;
}
int get(){
return *v;
}
private:
A();
int* v;
void operator=(const A &other);
TreePointer(const A &other);
};
Ich möchte es wie folgt verwenden:
A finalRes=a.add(b,c).add(a,a);
Es funktioniert perfekt, es gibt keine jede Speicherlecks. Aber wie implementiert man ein ähnliches Verhalten und Verwendung, ohne NRVO-Optimierung zu verwenden? Welche Standarddesignmuster existieren für diesen Zweck?
Folgen Regel von 3/5/0. – Jarod42
"* Es funktioniert perfekt, es gibt keine Lecks Speicher. *" Es ist sicher defekt; Ihr Verstoß gegen die Regel 5 stellt sicher, dass Speicher verloren geht. Oh sicher, Kopie Elision kann dich retten, aber das ist eine * Optimierung *, keine Voraussetzung. Es ist immer noch kaputt, selbst wenn es dir gelang, damit durchzukommen. –