2012-01-09 42 views
0

在模板類中,我發現表達式*this = NULL這樣的表達式意味着什麼?* 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

很難說沒有看到實際的代碼,這樣的陳述的觀點是什麼。

但它可能會調用重載的賦值運算符。例如:

#include <iostream> 

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

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


int main() { 
    X x; 
    x.foo(); 
} 
+0

用實際代碼編輯 – 2012-01-09 23:25:29

+0

@VishnuPedireddi:這不是足夠的代碼來找出原因是什麼。特別是,我們需要看到賦值操作符('operator =')和構造函數的定義,以及這個類實際是什麼的一些想法。 – 2012-01-09 23:29:47

+0

更新了代碼 – 2012-01-09 23:38:30

0

它試圖將0賦值給當前對象。它會調用類似

operator=(void *); 

另一種可能性(據我所知)是一種存在,這需要void*或相似類型的對象的構造。然後它會構造一個對象,然後複製 - 分配該對象。

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