zoukankan      html  css  js  c++  java
  • C++学习笔记(8)----C++类的大小

    C++类的大小

    (i)
    如下代码:

    #include<iostream>
    using namespace std;
    
    class CBase {
    
    };
    
    class CDerive :public CBase {
    
    };
    
    int main(int argc, char* argv[])
    {
    	CDerive p[3];
    	cout << "sizeof(CBase)=" << sizeof(CBase) << endl
    		<< "sizeof(CDerive)=" << sizeof(CDerive) << endl;
    	cout << "sizeof(p)=" << sizeof(p) << endl;
    	cout << "&p[0]=" << &p[0] << endl
    		<< "&p[1]=" << &p[1] << endl
    		<< "&p[2]=" << &p[2] << endl;
    	return 0;
    	
    }
    

    运行结果为:

    S:ComputerTechVS2015Release>Test.exe
    sizeof(CBase)=1
    sizeof(CDerive)=1
    sizeof(p)=3
    &p[0]=002CF7B8
    &p[1]=002CF7B9
    &p[2]=002CF7BA
    

    (ii)
    将上述代码中的CBase类重新声明如下:

    class CBase {
    	int num;
    };
    
    class CDerive :public CBase {
    
    };
    

    再次运行上述程序,结果如下:

    S:ComputerTechVS2015Release>Test.exe
    sizeof(CBase)=4
    sizeof(CDerive)=4
    sizeof(p)=12
    &p[0]=0023FD88
    &p[1]=0023FD8C
    &p[2]=0023FD90
    

    (iii)
    将(i)中的CBase类声明如下:

    class CBase {
    	int num;
    	double d;
    };
    
    class CDerive :public CBase {
    
    };
    

    运行结果:

    S:ComputerTechVS2015Release>Test.exe
    sizeof(CBase)=16
    sizeof(CDerive)=16
    sizeof(p)=48
    &p[0]=001DFA98
    &p[1]=001DFAA8
    &p[2]=001DFAB8
    

    (iv)

    将(i)中的CBase类和CDerive类声明如下:

    class CBase {
    	int num;
    	
    };
    
    class CDerive :public CBase {
    	int num2;
    };
    

    运行结果:

    S:ComputerTechVS2015Release>Test.exe
    sizeof(CBase)=4
    sizeof(CDerive)=8
    sizeof(p)=24
    &p[0]=0032F734
    &p[1]=0032F73C
    &p[2]=0032F744
    

    (v)
    将(i)中的CBase类和CDerive类声明如下:

    class CBase {
    	int num;
    	
    };
    
    class CDerive :public CBase {
    	double d;
    };
    

    运行结果:

    S:ComputerTechVS2015Release>Test.exe
    sizeof(CBase)=4
    sizeof(CDerive)=16
    sizeof(p)=48
    &p[0]=0041FE38
    &p[1]=0041FE48
    &p[2]=0041FE58
    

    总结:
    当类中含有变量时,类的大小就像普通的结构体那样去计算,大小为地址对齐后的所有变量的总的大小;当类中不含任何变量时,类的大小并非为0,而是为1个字节(如(i)所示)。

  • 相关阅读:
    建网站该选择服务器还是虚拟主机
    会计基础第一章模拟试题(3)
    会计基础第一章模拟试题(2)
    13条Android手机必备技巧 让玩机更有趣
    会计基础第一章模拟试题(1)
    会计基础第二次模拟题(6)
    Foxmail邮箱最新应用指南 --如何使用「邮件标签」?
    会计基础第二次模拟题(5)
    如何使用有道云笔记的剪藏功能
    使用JSCH执行命令并读取终端输出的一些使用心得
  • 原文地址:https://www.cnblogs.com/dongling/p/5864464.html
Copyright © 2011-2022 走看看