为了账号安全,请及时绑定邮箱和手机立即绑定

一个面试题,求解答

一个面试题,求解答

人到中年有点甜 2018-08-02 09:21:52
#include <iostream>using namespace std;class Myclass{public:    Myclass():i(0){};    void f1(){cout<<"f1"<<endl;}    void f2(){cout<<i<<endl;}private:    int i;};int main(){    Myclass *p = NULL;    // f1    p->f1();    // error    p->f2();    return 0;}如注释所说,p->f2()出错,求解答
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

没有声明对象,私有成员变量地址有个偏移会指向未知地址吧?

查看完整回答
反对 回复 2018-08-05
?
狐的传说

TA贡献1804条经验 获得超3个赞

Myclass *p,p只是有Myclass的类地址访问能力,但是没有分配自己的数据堆,调用f1只是访问类的函数,但是f2执行过程中访问了i这个变量,这个变量是不存在的,因为p的数据堆就不存在,所以问会出错,同上面的this为空。

查看完整回答
反对 回复 2018-08-05
  • 3 回答
  • 0 关注
  • 1072 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信