小弟现在对继承的问题有些疑惑,当子类继承父类后,子类对象的内存布局是什么样子的呢?有图最好 以c++来说子类对象先是父类的内存拷贝,然后是自己的扩展部分?其中内存中保存的主要是变量吧 函数属于类 对象中只有函数地址,对于虚函数的的函数表又是怎么保存呢? 另外如果在父类和子类中都有this指针的话他们是不是都是指向子类的对象? 对于以上问题不是很清楚,求大侠给出系统解释 ,小弟在此谢过
by gaozhongshan - C/C++ - 2007-07-05 12:59:41 阅读(2101) 回复(3)
如下代码: [code] class A { public: int a; char x; }; class B : public A { public: char y; }; class C : public B { public: char z; }; int main() { cout << sizeof(A) << sizeof(B) << sizeof(C) << endl; return 0; } [/code] 我测试了一下,32位机上,结果为 8,12,12. 肯定涉及到内存对齐的问题。但为什么B和C对象的大小是一样的呢?从内存上来看,这三者对象的数据成员是怎放置的?...
char * fun() { char *s="abc"; return s; } printf("%s",fun()); //结果是乱码 请问“abc”存放在内存哪啊 谢谢 [ 本帖最后由 1980116 于 2007-10-31 18:38 编辑 ]
下面这种继承体系在内存中布局应该是什么样的呢? [code]class A; class B : virtual public A; class C : public A; class D : public B, public C; [/code] 它与:[code] class A; class B : virtual public A; class C : virtual public A; class D : public B, public C;[/code] 有什么不同?
请问在嵌入式系统里中断栈 在A 和 B 的两种布局 哪一种更好,为什么? (处理器支持中断嵌套) [ 本帖最后由 quicksandj2 于 2007-10-9 11:03 编辑 ]
由于MIPS分kseg0,kseg1,kuseg,kseg2等区,而且启动不是在0x00000000,看了部分See MIPS Run和一些资料,还是很难理解MIPS的启动过程。请问各位大侠: 1)MIPS启动时到底那个区分别映射到哪些地址上?我的bootloader,kernel,rootfs到底放在哪些区中? 2)没有MMU的MIPS 在内存上是怎样布局的? 盼回复,非常感谢!
继北纬通信出资3000万元设立移动互联网投资公司后,拓维信息也发布公告称,公司拟以自用资金设立投资公司,注册资本5000万元。 继北纬通信出资3000万元设立移动互联网投资公司后,拓维信息也发布公告称,公司拟以自用资金设立投资公司,注册资本5000万元。两个公司均在公告中表示,子公司以“移动互联网行业”为投资目标。在行业人士看来,除了创业板的驱动外,3G时代的来临催生了整个行业拐点的出现,促使这...
中移动硅谷“智力”投资 或托熟人推荐、或直接投递,硅谷科技人士的简历正在以各种方式飞向硅谷Milpitas区McCarthy大道1525号大楼的200房。 这里,正是中移动美国研究所的所在地。旧金山时间1月5日,中移动研究院院长黄晓庆在中移动硅谷研发中心落成剪彩仪式上对美国当地的人才首次发出了呼唤。在更早以前的2008年10月,黄即已在硅谷当地放出了风声。 其时,黄晓庆在硅谷举行的“中国无线协会2008——移动竞创,通...
在C++的类(或许可以扩展到C的结构)的类对象,比如这个类(定义的或许有些不地道,只是个例子): class A{ public: A(){} ~A(){} other_func(int b); int getData(); /*others*/ private: int m_data1; std::string m_str; char m_other[1024]; }; 如果我在某种linux下用C++编译了这个类,而把这个类的对象的数据通过网络传给另一个平台下(比如 windows),在使用到致的类声明与定义的前提下...