求类的sizeof的值

实例分析:A类中内存对齐,所以int b;char c;占了8个字节(4x2),有一个指针指向虚表,4个字节,共12个字节,B类继承A类时,B并没有显示地给出虚函数声明,这是系统会按照以下规则来判断派生类中的函数成员是否是虚函数:1)函数名称 2)相同的参数个数和相同的参数类型 3)相同的返回值或是否满足类型兼并原则的指针和引用的返回值
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>

class A{
    public:
    int b;
    char c;
    virtual void print(){
        cout<<"this is a father's function!"<<endl;
    }
};

class B : public A{
    public:
    void print(){// 此处virtual void print()的结果是一样的
        cout<<"this is a children's function!"<<endl;
    }
};

int main(){
    cout<<sizeof(A)<<"  "<<sizeof(B)<<endl;
    system("pause");
}

如果再加上一个虚继承的指针,那么效果如下:

#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>

class A{
    public:
    int b;
    char c;
    virtual void print(){
        cout<<"this is a father's function!"<<endl;
    }
};

class B : virtual public A{
    public:
    void print(){
        cout<<"this is a children's function!"<<endl;
    }
};

int main(){
    cout<<sizeof(A)<<"  "<<sizeof(B)<<endl;
    system("pause");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值