zoukankan      html  css  js  c++  java
  • C++空类的大小

    先介绍一个问题,一个空类的大小是多少?

    我们不妨测试一下:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class vpoet
     5 {
     6 
     7 };
     8 
     9 int main()
    10 {
    11     cout<<"sizeof(vpoet)="<<sizeof(vpoet)<<endl;
    12     return 0;
    13 }

    运行结果:

    以我们的想法,既然这个类没有任何成员变量和成员函数那么肯定是类的大小为0。其实我们可以考虑一下关于内置

    类型,比如int类型 当我们定义一个int a[5],我们设&a[0]=MEM;那么&a[1]是不是就等于&a[1]=MEM+sizeof(int)呢,这

    样数组中每个元素都在一段连续的不同的内存上。那么同样的道理,当我们定义一个空类类型的数组 vpoet b[5],这

    候&b[1]=&b[0]+sizeof(vpoet)

    如果按照我们的想法如果一个空类的大小为0,那么岂不是b[1]与b[0]的内存产生了重叠,这样定义该类类型的数组显然就失去了

    意义,另一方面C++中要求对于类的每个实例都必须有独一无二的地址,那么编译器自动为空类分配一个字节大小,这样便保证了每

    个实例均有独一无二的内存地址。

  • 相关阅读:
    JS练习
    推断一组数的规律,并填充缺失的数
    IP地址的正则表达式写法
    相比于HTML4,HTML5废弃的元素有哪些?
    关于HTML5和CSS3的几个“新增”
    hdu 3092 简单数论+分组背包dp
    避障
    人工势场法
    A*
    pop 2049-简单bfs
  • 原文地址:https://www.cnblogs.com/vpoet/p/4680059.html
Copyright © 2011-2022 走看看