Q: 如下程序输出什么?
class A
{
public:
void fun()
{cout<<"aa"<<endl;}
private:
int a;
};
int main()
{
A *p=NULL;
p->fun();
return 0;
}
如果fun函数是虚函数呢?
****一下纯属个人解答,不知更好的解答如何****
一句话回答:类的所有对象共享一份成员函数,成员变量是对象自己拥有的。
要分清楚类和对象之间的区别。编译器编译时会存储类的定义,包括函数啊之类的。
p指向的是没有分配空间的,(类A的指针)p调用fun的时候,他会查看类定义中的符号表,执行函数,
所以会执行fun。
当virtual void fun()时,由于是虚函数,晚绑定,那么在运行时在决定调用哪个对象,
由于p指向的对象是NULL,所以会有访问错误