Chinaunix首页 | 论坛 | 博客
  • 博客访问: 494362
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 20:16
文章分类

全部博文(144)

文章存档

2017年(1)

2015年(5)

2014年(108)

2013年(30)

我的朋友

分类: C/C++

2014-09-02 15:44:41


点击(此处)折叠或打开

  1. #include <iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6.     A()
  7.     {
  8.         a=1;
  9.         b=2;
  10.     }
  11.     void fun()
  12.     {
  13.         cout<<"a:"<<a<<" "<<"b:"<<b<<endl;
  14.     //    b=2;
  15.     }
  16. private:
  17.     int a;
  18.     int b;
  19. };
  20. class B
  21. {
  22. public:
  23.     B()
  24.     {
  25.         c=6;
  26.         c=3;
  27.     }
  28.     void fun()
  29.     {
  30.         cout<<"c:"<<c<<endl;
  31.         //b=2;
  32.     }
  33. private:
  34.     int d;
  35.     int c;
  36.     //int b;
  37. };
  38. void main()
  39. {
  40. A a;
  41. B *b=(B *)(&a);
  42.     b->fun();

  43. }

由于B类中存放两个变量和A类相同,指针b强制类型转换指向a的首地址,通过指针调用fun函数读取c的变量,对应A类中的b变量的存储空间,所以输出为2。如下所示:

阅读(393) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~