Breymann. C++ Einführung und professionelle Programmierung

Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung

vred.bioinf.uni.sb.de
von vred.bioinf.uni.sb.de Mehr von diesem Publisher
17.11.2014 Aufrufe

9.2.4 Multiplikations-Operator Anwendung v1 *= 1.23; template mathVektor& mathVektor::operator*=(T zahl) { } for(int i = 0; i < xDim; ++i) // elementweise Multiplikation: start[i] = start[i]*zahl; return *this; // privat? xDim und start könnten auf den ersten Blick als private Attribute der Oberklasse Vektor entworfen worden und deswegen nicht zugreifbar sein! Abhilfe: 1. In der Oberklasse private durch protected ersetzen. Dann haben alle von Vektor abgeleiteten Klassen Zugriff auf diese Variablen. 2. Die zweite Möglichkeit besteht darin, nur geerbte, öffentliche Methoden zu verwenden: Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 394 zurück Ende

Version 2 template mathVektor& mathVektor::operator*=(T zahl) { } for(int i = 0; i < Groesse(); ++i) operator[](i) = operator[](i)*zahl; return *this; Diese Möglichkeit ist trotz inlining etwas langsamer, weil der Index geprüft wird. Bei 1. geschieht der Zugriff direkt über start. Jetzt kann die Multiplikation eines beliebig großen Vektors sehr einfach geschrieben werden, zum Beispiel: mathVektor v1(100), v2(200); //... // alle Elemente von v1 multiplizieren v1 *= 1.234567; Aber was ist mit v1 = v2 * 1.234567; oder v1 = 1.234567 * v2; ? Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 395 zurück Ende

Version 2<br />

template<br />

mathVektor& mathVektor::operator*=(T zahl) {<br />

}<br />

for(int i = 0; i < Groesse(); ++i)<br />

operator[](i) = operator[](i)*zahl;<br />

return *this;<br />

Diese Möglichkeit ist trotz inlining etwas langsamer, weil der Index<br />

geprüft wird. Bei 1. geschieht der Zugriff direkt über start.<br />

Jetzt kann die Multiplikation eines beliebig großen Vektors sehr einfach<br />

geschrieben werden, zum Beispiel:<br />

mathVektor v1(100), v2(200);<br />

//...<br />

// alle Elemente von v1 multiplizieren<br />

v1 *= 1.234567;<br />

Aber was ist mit v1 = v2 * 1.234567; oder<br />

v1 = 1.234567 * v2; ?<br />

<strong>Breymann</strong> <strong>C++</strong>, c○ Hanser Verlag München<br />

Inhalt ◭◭ ◭ ◮ ◮◮ 395 zurück Ende

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!