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

一道怪怪的C++有关问题

2012-03-05 
一道怪怪的C++问题1.没见过用struct这样用的2.结果问题?#includeiostreamusingnamespacestdstructA{int

一道怪怪的C++问题
1.没见过用struct这样用的

2.结果问题?

#include   <iostream>

using   namespace   std;

struct   A
{
int   a;
void   k(   )   {   a   =   100;   }
};

struct   B   :   public   A
{
virtual   void   f(   )   {   k(   );   }
};
 

void   main()
{
B   b;  
A*   a   =   (A*)   (void*)   &b;
a-> k();
cout < <b.a < < '   ' < <a-> a < <endl;  
}

结果为:-858993460   100



[解决办法]
呵呵,没人看出来吗,这个问题的关键在于,在题中的A,B定义下,
A* a = (A*) (void*) &b;

A* a = (A*)&b;
的结果是完全不一样的(两种情况下a指向的地址相差4字节). 你如果用后一种写法结果就正常了.

参见:
http://community.csdn.net/Expert/TopicView3.asp?id=5403017

热点排行