C++ sizeof

class A{
    int a;
    char c;
    char b;
};
class B{
    char c;
    int a;
    char b;
};
int main(int argc, char* argv[])
{
    cout<<sizeof(A)<<" "<<sizeof(B)<<endl;
    return 0;
}

输出结果为8,12

class A1{};
class A2{};
class A3{};
class A4{int a;};
class A:A1,A2,A3{};
class B:A4,A2,A3{};
class C:A2,A4,A3{};
int main(int argc, char* argv[])
{
    cout<<sizeof(A)<<" "<<sizeof(B)<<" "<<sizeof(C)<<endl;
    return 0;
}

输出2,8,4 好像是由于VS造成的

参考 http://blog.csdn.net/candyliuxj/article/details/6307814

参考http://zhidao.baidu.com/link?url=3EoEqmFhpRz8GykcmiH-UH2EXnZKyBtD_UatV6s86zW6tkBJKLfelkZNFDVjytXRYRPHRh2xqIUBEpZIhnRd6K&autorefresh=1382066735990

空的父类不需要分配空间,虚函数需要一个虚函数表,但是表的地址是共用的(对不同的虚函数)

posted @ 2013-10-14 23:20  懒猫欣  阅读(189)  评论(0编辑  收藏  举报