发布日期:2016-02-29 11:33 来源: 标签: 编程语言 C++开发语言 C++对象空间 C++对象存储
本章我们主要学习C++中类对象空间中常用的简单对象存储,下面们就做一下具体讲解,希望大家多多支持中国站长网络学院。
1、基本类型对齐原则: 
Char            1 
Short          2 
Int              4 
Long            4 
Float          4 
Double        8 
2、结构体类型对齐原则:
以最大成员类型的对齐方式为准,即当需要增长时,增长最大成员类型所占用的字节数。 
3、  静态成员变量不占用类对象的存储空间原则:static 
静态成员变量所有的类对象共享一份,在静态区域中,并不占用类对象的空间。 
4、 没有任何成员变量的类对象占用一个字节的空间 
对于没有任何成员变量的类(空类),其实它并不是空的,它隐含着被编译器添加了一个char。因为实例化的原因(空类同样可以被实例化),每个实例在内存中都必须有一个独一无二的地址。因此,编译器会给一个空类隐含的加一个字节,使空类在实例化后在内存得到独一无二的地址。 
验证程序:vc.net2003下运行结果 
#include <iostream> 
using namespace std; 
/*没有任何数据成员的对象类占用一个字节的空间*/-----规则4 
class A1 { }; 
/*静态数据成员不占用类对象的存储空间*/-----规则3 
class A2 { 
  char c1;      
  static int count; 
}; 
/*当只有char类型时,以1个字节为单位对齐*/----规则1 
class B1 { 
     char c1;      char c2; }; 
/*与A比较发现,当最大为short时,以2个字节为单位对齐*/----规则1 
class B2 { 
     char c1;      short s; }; 
/*与A比较发现,当最大为int时,以4个字节为单位对齐*/----规则1 
class B3 { 
     char c1;      int i; }; 
/*与A比较发现,当最大为double时,以8个字节为单位对齐*/-----规则1 
class B4 { 
     char c1;      float d; }; 
/*与A比较发现,当最大为double时,以8个字节为单位对齐*/----规则1 
class B5 { 
     char c1;      double d; }; 
/*c s i 占4个字节,d占8个字节*/----规则1 
class C1 { 
     char c; 
short s;      int i;      double d; }; 
/*d占4个字节,c s i 占4个字节*/----规则1 
class C2 { 
     double d;      char c;      short s;      int i; }; 
/*c占1个字节,d从下一个4字节开始占4个字节,s i在下一个4字节中*/----规则1 
class C3 { 
     char c;      double d;      short s;      int i; }; 
/*c s 在头4个字节中,d占下四个字节,i 在最后4个字节中*/-----规则1 
class C4 { 
     char c;      short s;      double d;      int i; }; 
int main() { 
cout << "size of A1 : " << sizeof(A1) << endl; /*1字节*/      
cout << "size of A2 : " << sizeof(A2) << endl; /*1字节*/      
cout << endl; 
cout << "size of B1 : " << sizeof(B1) << endl; /*2字节*/      
cout << "size of B2 : " << sizeof(B2) << endl; /*4字节*/      
out << "size of B3 : " << sizeof(B3) << endl; /*8字节*/      
cout << "size of B4 : " << sizeof(B4) << endl; /*8字节*/     
 cout << "size of B5 : " << sizeof(B5) << endl; /*16字节*/     
 cout << endl; 
 cout << "size of C1 : " << sizeof(C1) << endl; /*16字节*/      
cout << "size of C2 : " << sizeof(C2) << endl; /*16字节*/      
cout << "size of C3 : " << sizeof(C3) << endl; /*24字节*/      
cout << "size of C4 : " << sizeof(C4) << endl; /*24字节*/      
system("pause");      
return 0;
 }

相关评论

专题信息
    Visual C++是一个功能强大的可视化软件开发工具,是高等院校计算机及相关专业主要核心课程。 本教程对Visual C++ 的应用与开发进行了详细系统的介绍,内容主要包括:Visual C++程序的建立,菜单、工具栏和状态栏的创建,对话框和常用控件,窗口、文档与视图,图形绘制,数据库应用,多媒体技术等。 本教程以案例教学为主,各章节都附有大量的实例,并且操作步骤详细,有利于引导读者更好的消化、理解和实际应用本章节所学的知识内容,希望大家能多多支持中国站长网络学院!