sizeof基础知识

来源:互联网 发布:b超双顶径数据分男女 编辑:程序博客网 时间:2024/06/06 05:55

一、c++中的sizeof

1、一个空的class大小是1

2、添加构造函数和析构函数之后,大小还是1

3、添加虚析构函数

#include <iostream>using namespace std;class TestSizeof{public:    void testfun(int a);    TestSizeof(){}    virtual ~TestSizeof(){}};int main(){    //1、一个空的class大小是1,为什么不是0?因为我们声明该类的实例是,在内存中就占用一定的空间    //至于占用多少,是编译器说了算    cout<<"sizeof(TestSizeof) = "<<sizeof(TestSizeof)<<endl;    TestSizeof testsizeof;    cout<<"sizeof(testsizeof) = "<<sizeof(TestSizeof)<<endl;    //2、添加构造函数和析构函数之后,大小还是1,    /**    调用构造函数和析构函数只需要知道函数的地址即可,而这些地址只与类型相关,而与类型    的实例无关,编译器也不会因为这两个函数而在实例内添加任何额外的信息。    注:不管添加的是构造函数还是析构函数还是其它任何类型的函数,都是这个结果    */    cout<<"sizeof(testsizeof) = "<<sizeof(TestSizeof)<<endl;    //3、添加虚析构函数呢?    /**    C++的编译器一旦发现一个类型中有虚函数,就会为该类型生成虚函数表,    并在该类型的每一个实例中添加一个指向虚函数表的指针,    在32位机器上,一个指针占4字节空间,因此求sizeof得到4;如果是64位则为8。    */    cout<<"virtual sizeof(testsizeof) = "<<sizeof(TestSizeof)<<endl;    return 0;}


二、sizeof struct

C语言中sizeof一个空的struct大小是0

C++中sizeof一个空的struct大小是1

0 0
原创粉丝点击