首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能解释一下:空指针对象成员函数调用正常

2012-03-09 
谁能解释一下:空指针对象成员函数调用正常classA{public:intbintfunc1(){return10}}//调用时A*paNULL

谁能解释一下:空指针对象成员函数调用正常
class   A
{
public:
int   b;
int   func1(){return   10;};
};

//调用时
A   *   pa   =   NULL;
int   aa   =   pa-> func1();//这行不出错,结果正确


调试时发现,   pa地址为   NULL,而pa-> func1地址有效。

谁能解释一下?


[解决办法]
成员函数是独立于对象的,也就是说它不在对象内部。
[解决办法]
int aa = pa-> func1();

这个不是虚函数,函数地址直接编译到这里,所以能调用
相当于 int a = A::func1(this)
不过传给func1的this指针应该是NULL

如果是虚函数,就可能会出错了
int a = pa-> vtable[0](this)

[解决办法]
呵呵,这是正常的,只要函数里面不通过this指针去操作成员变量就行,成员函数跟一般的函数没什么差别,只不过调用方式需要一个类的对象或者指针来调用罢了,因为它默认绑定了一个this指针形参而已,这个指针为0也没问题。

热点排行