C++ 在模板类的方法中,*this=NULL意味着什么?
在一个模板类中,我找到了表达式,C++ 在模板类的方法中,*this=NULL意味着什么?,c++,templates,null,this,C++,Templates,Null,This,在一个模板类中,我找到了表达式,*this=NULL这样的表达式是什么意思 其定义如下: TYPE** getPtr() { *this = NULL; return &m_pPtr; } 其中m_pPtr是模板类中的typetype* 分配操作员: // Assignment operator. TYPE* operator =(TYPE *pPtr) { if (pPtr == m_pPtr) return pPtr; m_pPtr = pPtr; r
*this=NULL
这样的表达式是什么意思
其定义如下:
TYPE** getPtr()
{
*this = NULL;
return &m_pPtr;
}
其中m_pPtr是模板类中的typetype*
分配操作员:
// Assignment operator.
TYPE* operator =(TYPE *pPtr) {
if (pPtr == m_pPtr)
return pPtr;
m_pPtr = pPtr;
return m_pPtr;
}
毗湿奴。在没有看到实际代码的情况下,很难说出这种说法的意义 但它可能会调用重载的赋值运算符。e、 g:
#include <iostream>
class X {
public:
void operator=(void *) {
std::cout << "Here!\n";
}
void foo() {
*this = NULL;
}
};
int main() {
X x;
x.foo();
}
#包括
X类{
公众:
void运算符=(void*){
std::cout它正在尝试将0分配给当前对象。它将调用
operator=(void *);
另一种可能性(据我所知)是,对象中有一个构造函数,它采用void*
或类似类型。然后它将构造一个对象,然后复制并分配该对象
T :: T(void *); // construct with the void *
T :: T(const T &); // copy assignment
@VishnuPedireddi:这还不足以说明原因。特别是,我们需要了解赋值运算符的定义(operator=
)还有构造函数,还有一些关于这个类实际上是什么的想法。@VishnuPedireddi:嗯,*this=NULL
确实在调用赋值运算符,赋值运算符反过来将m_pPtr
设置为NULL
。我不能告诉你为什么,因为你还没有说这个类是什么!(即,这个类的用途是什么)