c++父类指针子类指针转化分析

一个子类继承多个父类时,在父类指针转化为子类指针以及子类指针转化为父类指针方面c++似乎做的很是智能化:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 class A
 4 {
 5 public:
 6     A()
 7     {
 8 
 9     }
10     virtual void print()
11     {
12         cout << 1 << endl;
13     }
14 private:
15     int c;
16 };
17 
18 class C
19 {
20 public:
21     C()
22     {
23 
24     }
25 private:
26     int e[5];
27 };
28 
29 class B : public A, public C
30 {
31 public:
32     B() : A(), C()
33     {
34 
35     }
36     void print()
37     {
38         cout << 2 << endl;
39     }
40     void print2()
41     {
42         cout << 3 <<endl;
43     }
44 private:
45     int d[11];
46 };
47 int main()
48 {
49     A a;
50     B b;
51     a = b;
52     B *e = new B();
53     A *c = e;
54     C *f = e;
55     cout << "c:" << c << endl << "f:" << f << endl << "e:" << e << endl;
56     B *g = (B *)f;
57     B *h = (B *)c;
58     cout << "g:" << g << endl << "h:" << h << endl;
59     return 0;
60 }
View Code

程序运行结果如下:

1 c:0x22ddc20
2 f:0x22ddc2c
3 e:0x22ddc20
4 g:0x22ddc20
5 h:0x22ddc20

可以看见,子类指针转化为父类指针时,当父类指针需要偏移时可以自动偏移。同样的,父类指针转化为子类指针时也可以自动偏移到正确的位置,这说明在父类指针和子类指针转化过程中在地址偏移偏移方面完全不需要程序员操心。

转载于:https://www.cnblogs.com/lthb/p/6629011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值