当前位置:  编程技术>c/c++/嵌入式

C++ sizeof 实例解析

    来源: 互联网  发布时间:2014-10-18

    本文导语:  在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大...

在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。
sizeof使用形式有三种:sizeof(var_name)或sizeof var_name或sizeof(var_type)。

【例1】:(列子中忽略构造及析构函数)

代码如下:

class A 

    public:
        void hello(){} 
}; 
sizeof(A)= 1;

肯定不是零。举个反例,如果是零的话,声明一个class A a[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

因为A是空类,占字节为1是为了区分两个不同的对象,也可以看做是占位符,该字节的地址也就是对象的地址。但是这里的1也不是绝对的,只是编译器这样设定而已。
【例2】:

代码如下:

class B 

    public:
         void hello(){}
         static int i;
}; 
    sizeof(B) = 1;

因为static变量为类中共享,在静态区分配空间,在编译时就分配了空间,不占类内存。
【例3】:
代码如下:

classC

    public:
        virtual void hello(){}
};
sizeof(C)= 4;

B类中有虚函数,相应的会有虚表指针存在,占4个字节,恰好是一个指针的空间。同时,如果有多个virtual函数或有多个类继承了C类,虚函数也只占4个字节,如【例4】:
【例4】:
代码如下:

class D : public C
{
    public:
        virtual void world(){}
        virtual  void nihao(){}
};
sizeof(D)= 4;

【例5】:
代码如下:

class E

    public:
          virtual void hello(){}
          virtual void world(){}
          staticint i;
          static int j;
          int k;
};
     sizeof(E) = 8;

希望对你有所帮助。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 解析一个有关sizeof用法的题目--sizeof(i++)
  • 解析sizeof, strlen, 指针以及数组作为函数参数的应用
  • sizeof的问题
  • sizeof的疑问
  • 关于用‘与’‘或’‘非’或移位求出sizeof的问题
  • 一个有关sizeof的问题
  • sizeof的输出值
  • C语言安全编码之数值中的sizeof操作符
  • sizeof()疑问???
  • 命令求解:去掉#define语句中的sizeof()
  • long数据类型在32为或者64的不同平台上,sizeof(long)是否不变?
  • Java中有没有象C/C++中的sizeof()函数?
  • sizeof class 在 64位linux 和 xp下 值不一样
  • 解决不用sizeof求出int大小的方法
  • 请问: setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL)); 中的,(const char*)&bDontLinger是什么意思啊
  • 对C语言中sizeof细节的三点分析介绍
  • 浅析C/C++中被人误解的SIZEOF
  • 关于毫秒级延时和sizeof的问题
  • 自定义的一个结构,sizeof时长度不对,不知为什么?
  • 基于Sizeof与Strlen的区别以及联系的使用详解
  • 浅析C语言中的sizeof
  • 深入sizeof的使用详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3