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