sizeof

作者: 元素周期表的十七君 | 来源:发表于2017-08-05 10:39 被阅读0次

定义一个空的类型,里面没有任何成员变量和函数,对该类型求sizeof,得到的结果是?

答:1

为什么不是0?

答:声明该类型的实例的时候,必须在内存中占有一定的空间,否则无法使用实例。占多少内存,由编译器决定。VS中每个空类型的实例占用1字节。

如果在该类型中添加一个构造函数喝析构函数,再求sizeof,得到的结果是?

答:还是1.因为调用构造函数和析构函数只需要知道函数的地址,地址只与类型有关,与实例无关,编译器不会为构造函数和析构函数添加任何额外的信息。

如果把析构函数改为虚函数呢?

答:编译器会为虚函数生成虚函数表,并在该类型的每个实例中添加一个指向虚函数表的指针。32位的机器,一个指针占4字节,sizeof结果为4;64位机器,一个指针占8字节,sizeof结果为8.

相关文章

  • 布尔

    sizeof(BOOL) = 1sizeof(bool) = 1sizeof(Boolean) = 1

  • 【C语言】3.sizeof

    1.sizeof sizeof并不是函数,而是运算符。可以用sizeof计算有多少字节。通常用sizeof(常量/...

  • C 基本数据类型内存

    sizeof long int=4; //这与int一样 sizeof shor int=2; sizeof do...

  • 那些奇妙的C语言

    sizeof int等同于sizeof(int)

  • c++中特殊运算符

    运算符而不是函数 sizeof:对象大小 sizeof expr ;类型大小 sizeof(type);参数包大小...

  • sizeof(std::string), 到底是多少?

    sizeof(std::string); 又或者 std::string str="";sizeof(str); ...

  • c语言中数组指针

    c语言中没有专门计算数组长度的函数,需使用sizeof(arr)/sizeof(int)计算,其中sizeof(a...

  • enum hack test

    enum hack test output:sizeof(Y): 80sizeof(X): 1

  • 2017C++面试题

    1.sizeof和strlen的区别 sizeof和strlen有以下区别:  sizeof是一个操作符,str...

  • sizeof

    定义一个空的类型,里面没有任何成员变量和函数,对该类型求sizeof,得到的结果是? 答:1 为什么不是0? 答:...

网友评论

      本文标题:sizeof

      本文链接:https://www.haomeiwen.com/subject/vmyilxtx.html