多态易错题5

看代码,输出结果

#include
using namespace std;

class base
{
private :
public :
    void fu(){}
};

class der:public base
{
private:
public :
    void fun(){}
};
int main()
{
    der s1;
    cout<<sizeof(s1)<return 0;
}

结果:1

#include
using namespace std;

class base
{
private :
public :
    void fu(){}
};

class der:virtual public base
{
private:
public :
    void fun(){}
};
int main()
{
    der s1;
    cout<<sizeof(s1)<return 0;
}

结果: 4
对象内存多了一个vbptr

#include
using namespace std;

class base
{
private :
public :
    void fu(){}
};

class der:virtual public base
{
private:
public :
    virtual void fun(){}
};
int main()
{
    der s1;
    cout<<sizeof(s1)<return 0;
}

结果:8
对象内存多了一个vfptr;

你可能感兴趣的:(c++)