答案是肯定的,还可以使用。
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 4memset此句,不影响pNull指向的内存,(即不影响this指针,this不为空),只是使得内存保存的数据被置0
以下的语句也合法
CNullPointCall *pNull = nullptr; //空指针,this=nullptr
pNull->Test1(); // 静态函数,不依赖this
pNull->Test2(); // 函数内部未调用this
pNull->Test3(13); // 函数内部未调用this
本文探讨了C++中使用空指针调用成员函数的现象,包括静态成员函数和不依赖于this指针的成员函数。通过具体示例说明了在不同情况下空指针调用是否可行。

189

被折叠的 条评论
为什么被折叠?



