zoukankan      html  css  js  c++  java
  • class layout basic 2

    #include<iostream>
    using namespace std;
    
    //虚函数和析构函数需要定义,否则
    //a missing vtable usually means the first 
    //non-inline virtual member function has no definition.
    
    class a{
        virtual void func(){};
    public:
        virtual ~a()=default;//析构函数需要为public
    }aObj;
    
    class b :public virtual a{
        virtual void foo(){};
    public:
        virtual ~b()=default;
    }bObj;
    
    class ax{
        virtual void func(){};
        char x;
    public:
        virtual ~ax()=default;
    }axObj;
    
    class bx:public virtual ax{
        virtual void foo(){};
    public:
        virtual ~bx()=default;
    }bxObj;
    
    class c{
        virtual void func(){};
    public:
        virtual ~c()=default;
    }cObj;
    
    class d :public c{
        virtual void foo(){};
    public:
        virtual ~d()=default;
    }dObj;
    
    class cx{
        virtual void func(){};
    public:
        virtual ~cx()=default;
        char x;
    }cxObj;
    
    class dx:public cx{
        virtual void foo(){};
    public:
        virtual ~dx()=default;
    }dxObj;
    
    int main(){
        cout<<"aObj "<<sizeof(aObj)<<endl;
        cout<<"bObj "<<sizeof(bObj)<<endl;
        cout<<"axObj "<<sizeof(axObj)<<endl;
        cout<<"bxObj "<<sizeof(axObj)<<endl;
        cout<<"cObj "<<sizeof(cObj)<<endl;
        cout<<"dObj "<<sizeof(dObj)<<endl;
        cout<<"cxObj "<<sizeof(cxObj)<<endl;
        cout<<"dxObj "<<sizeof(dxObj)<<endl;
        return 0;
    }
    
    //clang3.8 gcc7.1
    //aObj    8
    //bObj    8
    //axObj   16
    //bxObj   16
    //cObj    8
    //dObj    8
    //cxObj   16
    //dxObj   16
  • 相关阅读:
    服务器&域名那些事儿
    原生js实现简单打字机效果
    Mac OS X 11以上系统的Rootless机制问题
    用hexo书写github.io博客 学习心得 教程
    冒泡排序
    选择排序
    TCP三次握手和四次挥手
    常见HTTP状态码
    JSONP
    前端缓存(cookies、localStorage、sessionStorage)
  • 原文地址:https://www.cnblogs.com/Searchor/p/9526566.html
Copyright © 2011-2022 走看看