作者legnaleurc (CA)
看板Programming
标题Re: C++ overriding/overriding的问题
时间Wed Feb 13 16:52:01 2008
※ 引述《ya790206 (残云夺月)》之铭言:
恕删
: 结果是4 8
: 为何是八之前有人问过,不过我不懂
: DevC++的结果
我认为它的sizeof的计算方式很有趣
我把B改成虚拟继承A,印出来就变成4 12
然後如果A的x是static int
印出来会变成1 1
不知道是怎麽算的
--
自High笔记(半荒废)
http://legnaleurc.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.131.219
1F:→ adrianshum:virtual inheritence 反而变大? 202.155.236.82 02/13 16:54
2F:→ adrianshum:还是你指的是有 method 是 virtual? 202.155.236.82 02/13 16:56
3F:→ adrianshum:static 是 1 很正常因为 int 不是 202.155.236.82 02/13 16:56
4F:→ adrianshum:instance var 而是 class var 202.155.236.82 02/13 16:57
5F:→ legnaleurc:对,就是virtual inheritence 211.74.131.219 02/13 16:56
6F:→ ya790206:虚拟计程真的变大,DevC++跟VC++2005 59.116.135.217 02/13 16:56
7F:→ legnaleurc:use gcc 4.1.2 211.74.131.219 02/13 16:57
8F:→ legnaleurc:但是class B也变成1就说不过去了 211.74.131.219 02/13 16:58
9F:推 adrianshum:virtual继承和一般主要分别不是指多个 202.155.236.82 02/13 17:00
10F:→ legnaleurc:毕竟B还是有一般成员变数啊 211.74.131.219 02/13 17:00
11F:→ adrianshum:同样的 base class instance 只会出现 202.155.236.82 02/13 17:00
12F:→ adrianshum:在本身一次嘛? 理应只会小不会大哩, 还 202.155.236.82 02/13 17:01
13F:→ adrianshum:是要逹到这个有特别的 overhead? 202.155.236.82 02/13 17:01
14F:→ adrianshum:legnaleurc: 1 没有问题吧? 里面没东西 202.155.236.82 02/13 17:01
15F:→ adrianshum:不是 1 该是什麽 ? o_oa 202.155.236.82 02/13 17:02
16F:→ legnaleurc:不会连vt也算在sizeof里吧? 211.74.131.219 02/13 17:02
17F:→ legnaleurc:A有一个static int x 211.74.131.219 02/13 17:02
18F:→ legnaleurc:啊啊,我好像了解了....所以static不会 211.74.131.219 02/13 17:03
19F:→ legnaleurc:使用多余的空间 211.74.131.219 02/13 17:04
20F:→ legnaleurc:我原本认为是1 2,就是会再加上B 211.74.131.219 02/13 17:04
21F:推 adrianshum:vt 当然有算在 sizeof 的 202.155.236.82 02/13 17:06
22F:推 saladim:虚拟继承会多出一个指标122.116.230.132 02/15 20:39
23F:→ saladim:指向virtual table, 请参阅C++的书籍122.116.230.132 02/15 20:39
24F:→ saladim:static的member不算入class大小122.116.230.132 02/15 20:41