C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用

C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用
#include "stdafx.h"

class A {
public:
int i;
A() { i=1; }
};

class B: public A {
public:
int i;
B() { i=2; }
};

class C: public B {
public:
int i;
C() { i=3; }
};


int main(int argc, char* argv[])
{
A a1;    printf(" %d\n", a1.i); 
B a2;    printf(" %d\n", a2.i); 
C a3;    printf(" %d\n", a3.i);

printf(" %d\n", ((B)a2).i);
printf(" %d\n", ((B)a3).i);
printf(" %d\n", ((C)a3).i);

printf(" %d\n", sizeof(a1));
printf(" %d\n", sizeof(a2));
printf(" %d\n", sizeof(a3));

return 0;
}
C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用

打印结果:

1
2
3
2
2
3
4
8
12

C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用,布布扣,bubuko.com

C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用

上一篇:C++中虚基类在派生类中的内存布局


下一篇:微信公众号群发消息,报错返回 “read time out” 的处理办法