Что означает * this = NULL внутри метода в шаблонном классе? - PullRequest
0 голосов
/ 10 января 2012

Внутри шаблонного класса я нашел выражение, *this = NULL Что означает такое выражение?

Ниже приведено определение:

TYPE** getPtr() 
{
 *this = NULL;
 return &m_pPtr;
}

где m_pPtr - тип TYPE* в классе шаблона.

Оператор присваивания:

// Assignment operator.
TYPE* operator =(TYPE *pPtr) {
  if (pPtr == m_pPtr)
    return pPtr;

  m_pPtr = pPtr;

  return m_pPtr;
}

Вишну.

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Трудно сказать, в чем смысл такого утверждения, не видя фактического кода.

Но это, вероятно, вызовет перегруженный оператор присваивания.например:

#include <iostream>

class X {
public:
    void operator=(void *) {
        std::cout << "Here!\n";
    }

    void foo() {
        *this = NULL;
    }
};


int main() {
    X x;
    x.foo();
}
0 голосов
/ 10 января 2012

Попытка присвоить 0 текущему объекту.Он будет вызывать что-то вроде

operator=(void *);

Другая возможность (насколько я знаю) состоит в том, что в объекте есть конструктор, который принимает void* или подобный тип.Затем он создаст объект, а затем скопирует и назначит его.

T :: T(void *);    // construct with the void *
T :: T(const T &); // copy assignment
...