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

结果和老师讲的不一样

请教一个问题: Derived derived2(999); int* p3 = (int*)&derived2; cout << p3 << " " << (int*)&derived2.m_nNumber << endl; cout << (unsigned int)(*p3) << " " << derived2.m_nNumber << endl; 用VS2013编译,为什么结果是这样的? 00,EFF,69C 00,EFF,6A0 1,728,492 999

正在回答

2 回答

对象变量首地址;对象变量999的存储地址;指针p3地址中4字节的值;变量值。

0 回复 有任何疑惑可以回复我~
#1

hcmonk 提问者

你这样说我懂了, 但视频里演示的结果是这样的,(unsigned int)(*q)输出值是100,即第一个成员的值,而我的例子(unsigned int)(*p3)并非成员的值,请问是为什么?
2016-05-10 回复 有任何疑惑可以回复我~
#2

hcmonk 提问者

我已经知道了,Derived有虚析构函数,(unsigned int)(*p3)应该是虚函数指针的值,p3是虚函数指针地址。
2016-05-10 回复 有任何疑惑可以回复我~
#3

hcmonk 提问者

非常感谢!
2016-05-10 回复 有任何疑惑可以回复我~

视频里演示的结果是这样的

http://img1.sycdn.imooc.com//5731ea320001f11a13660768.jpg

(unsigned int*)(*q)的值是第一个成员的值,但我的例子里(unsigned int)(*p3)并非成员的值,我想问一下为什么会有这个区别?

0 回复 有任何疑惑可以回复我~
#1

hcmonk 提问者

有点写错了,(unsigned int*)(*q)改为(unsigned int)(*q)
2016-05-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

结果和老师讲的不一样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信