1、
#include <iostream>
class Test
{
public:
void print()
{
printf("print null\n");
}
void set(int n)
{
m_val = n;
printf("%d\n ",m_val);
}
private:
int m_val;
};
int main()
{
Test *a =NULL;
a->print();
a->set(10);
return 0 ;
}
编译通过,运行输出:print null
第二条不成功,提示:Access violation writing location 0x00000000.
print是一个类级别的东西,也就是说它和类的实例(或者类的对象)没有任何关系,这也就是“并未使用this指针”,在这种情况下,print仅与a的类型有关,而不管a是什么东西,实际上,你甚至可以写下面这样的代码:
((Test*)123456)->print();
对象级别的东西,比如类中的某个非静态成员变量,这种东西和类的实例有关,因此它使用this指针,这样的情况下,就不能像上面那么写了。