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

template inline Vektor &Vektor::operator=(const Vektor& v) { if (this != &v) { // Zuweisung identischer Objekte vermeiden T * temp = new T[v.xDim]; // neuen Platz beschaffen for (int i = 0; i < v.xDim; ++i) temp[i] = v.start[i]; delete[] start; // Speicherplatz freigeben xDim = v.xDim; // Verwaltungsinformation aktualisieren start = temp; } return *this; } Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 390 zurück Ende

Dynamisches Ändern der Vektorgröße Nachdem die Wirkungsweisen von Kopierkonstruktor und Zuweisungsoperator bekannt sind, macht es nun keine Schwierigkeiten, eine Methode zum Ändern der Größe eines Vektors zu schreiben: template void Vektor::GroesseAendern(int neueGroesse) { } // neuen Speicherplatz besorgen T *pTemp = new T[neueGroesse]; // die richtige Anzahl von Elementen kopieren int kleinereZahl = (neueGroesse > xDim) ? xDim : neueGroesse; for(int i = 0; i < kleinereZahl; ++i) pTemp[i] = start[i]; delete [] start; // Verwaltungsdaten aktualisieren start = pTemp; xDim #endif // vektor_t = neueGroesse; // alten Speicherplatz freigeben Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 391 zurück Ende

template<br />

inline Vektor &Vektor::operator=(const Vektor& v) {<br />

if (this != &v) { // Zuweisung identischer Objekte vermeiden<br />

T * temp = new T[v.xDim]; // neuen Platz beschaffen<br />

for (int i = 0; i < v.xDim; ++i)<br />

temp[i] = v.start[i];<br />

delete[] start; // Speicherplatz freigeben<br />

xDim = v.xDim; // Verwaltungsinformation aktualisieren<br />

start = temp;<br />

}<br />

return *this;<br />

}<br />

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

Inhalt ◭◭ ◭ ◮ ◮◮ 390 zurück Ende

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!