答案是肯定的,还可以使用。
class CNullPointCall
{
public:
CNullPointCall() {
this->m_iTest = 1100;
}
static void Test1();
void Test2();
void Test3(int iTest);
void Test4();
private:
static int m_iStatic;
int m_iTest;
};
int CNullPointCall::m_iStatic = 0;
void CNullPointCall::Test1()
{
cout << m_iStatic << endl;
}
void CNullPointCall::Test2()
{
cout << "Very Cool!" << endl;
}
void CNullPointCall::Test3(int iTest)
{
cout << iTest << endl;
}
void CNullPointCall::Test4()
{
cout << m_iTest << endl;
}
函数调用
CNullPointCall *pNull = new CNullPointCall;
//此时 m_iTest = 1100
memset(pNull, 0, sizeof(pNull));
//此时 m_iTest = 0
pNull->Test1(); // call 1
pNull->Test2(); // call 2
pNull->Test3(13); // call 3
pNull->Test4(); // call 4
memset此句,不影响pNull指向的内存,(即不影响this指针,this不为空),只是使得内存保存的数据被置0
以下的语句也合法
CNullPointCall *pNull = nullptr; //空指针,this=nullptr
pNull->Test1(); // 静态函数,不依赖this
pNull->Test2(); // 函数内部未调用this
pNull->Test3(13); // 函数内部未调用this