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;
}

打印结果:

1
2
3
2
2
3
4
8
12

C++继承类同名属性被隐藏,其实都在内存里,并且都可以被使用,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。