der This Pointer
-
ich habe diesen This-Pointer gerade in der Vorlesung gelernt und habe schon im Buch nachgeschaut was das ist und wie man mit dem programmieren soll. Aber ich habe immer noch schwierigkeiten zu verstehen. könnt ihr mir ein bißchen klar machen, wie man mit diesem This-Zeiger programmieren soll und warum braucht man diesen Zeiger ? Ich weiß es nicht, ob diese Frage schon mal vorkommt, wenn schon, bitte sag mir ja... danke euch!
-
Hier brauchst du ihn zum Beispiel:
class bla{
int x;
foo (int x);
}foo(int x)
{
this->x=x;
}
-
class Number { //... public: //... Number & operator=(const Number Obj); }; Number & Number::operator=(const Number Obj) { m_Value = Obj.m_Value; return *this; }
-
Ein anderer Fall, wo ein this nützlich ist:
template <typename T> class Base { T obj; }; template <typename T> class Derived : public Base<T> { void foo() { this->obj = T(); } };
Man kann zwar auch Base<T>::obj schreiben, aber this finde ich eingängiger.
-
danke sehr für eure Antworten... habe mich sehr gefreut! Ich finde den this sehr nützlich wenn man den ++ operator überladen möchte. oder ??? ich habe noch ein Problem, den Indexoperator [] zu überladen. könnt Ihr mir zeigen wie man den Indexoperator überladen kann ???
-
Hallo,
Zum Beispiel: (Ungetestet)template<class T> class Array { private: unsigend int size; T* v; public: Array() { ...} Array(const unsigned int s) : size(s) { v = new T[size]; } // ... T& operator[](const unsigned int l) { // Bereichsüberschreitungen hier einfügen... return v[l]; } // Read-only-Version. const T& operator[](const unsigned int l) const { // Bereichsüberschreitungen hier einfügen... return v[l]; } };
Kurz gesagt, zur Überladung des []-Operators brauchst du (normalerweise) kein *this.
Caipi