Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在模板类的方法中,*this=NULL意味着什么?_C++_Templates_Null_This - Fatal编程技术网

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是模板类中的type
type*

分配操作员:

// 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
。我不能告诉你为什么,因为你还没有说这个类是什么!(即,这个类的用途是什么)