C++ Konstruktor-Aufruf-Suche im Code

Anstatt sich über Mikro-Optimierungen wie Temporary-Vermeidung den Kopf zu zerbrechen, sollte man sich auf URVO, NRVO, constructor elision und weitere Compileroptimierungen verlassen und stattdessen dem Code eine anständige Semantik verpassen. Getreu dem Motto "do it as the int's do".

Code:
A& A::operator*=( const A& other)
{
  nenner *= other.nenner;
  zaehler *= other.zaehler;
  // kuerzen();
  return *this;
}

A A::operator*( const A& other)
{
  A tmp( *this);
  tmp *= other;
  return tmp;
}

Stellt sich raus, dass das ein Problem darstellt, kann man erstmal die Algorithmen optimieren und ansonsten Schweinereien wie expression templates probieren. Die Kopie ist ein grundsätzliches Merkmal von C++.

Mit C++2011 kann man außerdem rvalue-Referenzen korrekt implementieren zur temporary-Vermeidung.
 
Zuletzt bearbeitet:
Zurück
Oben