zoukankan      html  css  js  c++  java
  • C++中无数据成员的类的对象占用内存大小

    结论:

    对于没有数据成员的对象,其内存单元也不是0,c++用一个内存单元来表示这个实例对象的存在。

    如果有了数据或虚函数(虚析构函数),则相应的内存替代1标记自己的存在。

    PS:以下代码均在win32控制台下运行。

    e.g.1

    class A
    {
    public:
        void fun()
        {
            cout<<"A"<<endl;
        }
    };
    
    void main()
    {
        A a;
        cout<<sizeof(a)<<endl;
    }

    运行后输出1。

    e.g.2

    class A
    {
    public:
        virtual void fun()
        {
            cout<<"A"<<endl;
        }
    };
    
    void main()
    {
        A a;
        cout<<sizeof(a)<<endl;
    }

    运行后输出4。

    e.g.3

    class A
    {
    public:
        void fun()
        {
            cout<<"A"<<endl;
        }
        virtual ~A()
        {
            //这是一个虚析构函数;
        }
    };
    
    void main()
    {
        A a;
        cout<<sizeof(a)<<endl;
    }

    运行后输出4。

    Mark一个虚函数表讲解的博文:C++虚函数表剖析

  • 相关阅读:
    学习Python第五天
    学习Python第三天
    Mongodb
    JMS links
    笔记整理
    a* products
    String
    business knowledge
    [Java coding] leetcode notes
    [Java Basics3] XML, Unit testing
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9341952.html
Copyright © 2011-2022 走看看