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:\ComputerTech\VS2015\Release>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:\ComputerTech\VS2015\Release>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:\ComputerTech\VS2015\Release>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:\ComputerTech\VS2015\Release>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:\ComputerTech\VS2015\Release>Test.exe
sizeof(CBase)=4
sizeof(CDerive)=16
sizeof(p)=48
&p[0]=0041FE38
&p[1]=0041FE48
&p[2]=0041FE58
总结:
当类中含有变量时,类的大小就像普通的结构体那样去计算,大小为地址对齐后的所有变量的总的大小;当类中不含任何变量时,类的大小并非为0,而是为1个字节(如(i)所示)。
C++学习笔记(8)----C++类的大小的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Caliburn.Micro学习笔记(一)----引导类和命名匹配规则
Caliburn.Micro学习笔记目录 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详 ...
- python cookbook第三版学习笔记十:类和对象(一)
类和对象: 我们经常会对打印一个对象来得到对象的某些信息. class pair: def __init__(self,x,y): self.x=x self. ...
- Java学习笔记16---抽象类与接口的浅显理解
抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- 【C语言学习笔记】存储类、链接和内存管理
因为对内存管理部分一直没有很清楚的思路,所以一直在找资料想系统看一下这部分的内容.在C primer plus里看到了这一章,虽然大多都是心知肚明的东西,但是还是很多概念性系统性的东西让我眼前一亮,把 ...
- bootstrap学习笔记--bootstrap排版类的使用
标题 Bootstrap 中定义了所有的 HTML 标题(h1 到 h6)的样式,这个和一般的html没啥区别.请看下面的实例: <h1>测试1 h1</h1> <h2& ...
随机推荐
- (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...
- (转)Windows上使用CMake
CMake简介 原文:http://blog.gclxry.com/use-cmake-on-windows/ 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软 ...
- JS写游戏
最近在看萧井陌的视频.感觉一些东西挺有意思的,尤其是解决问题的过程,以及一个好程序应该改进的地方. 萧大的GITHUB:github.com/guaxiao/gua.game.js 视频:https: ...
- maven备忘
maven常见命令 mvn clean mvn compile mvn package mvn clean compile package mvn -Djetty.port= jetty:run mv ...
- HDU 6225 Little Boxes
Little Boxes Little boxes on the hillside. Little boxes made of ticky-tacky. Little boxes. Little ...
- Android Anwendungsprogramm Entwicklung
1.Einführung des Androids 1.1 Grundlage der Anwendung Activity ist eine Spezifische Bespiel von Andr ...
- 设计模式应用场景之Model设计中可以用到的设计模式
在开发中,不同的场景适用不同的设计模式.对于开发建模方面,可以根据模型的抽象类型设计成简单属性模式和复杂组合模式. 因为组合模式中的属性为多种类型对象,可操作性也比较灵活. 而针对这种复杂数据结构,有 ...
- 开源高性能网络库Libevent的简介
Libevent是什么? Libevent 是一个用C语言编写的.轻量级的开源高性能网络库. 官网:http://libevent.org/ 优点: (1)事件驱动,高性能 (2)轻量级,专注于网络 ...
- iOS开源项目周报0119
由OpenDigg 出品的iOS开源项目周报第六期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Sharaku ...
- MySQL中使用SHOW PROFILE命令分析性能的用法整理(配合explain效果更好,可以作为优化周期性检查)
这篇文章主要介绍了MySQL中使用show profile命令分析性能的用法整理,show profiles是数据库性能优化的常用命令,需要的朋友可以参考下 show profile是由Jerem ...