21.C++的对象模型
程序1:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}
输出结果:
1
请按任意键继续. . .
程序2:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
Maker *m = new Maker[20];//为什么空类是1?因为编译器从内存更好区分对象
}
class Maker2
{
public:
void func()
{
}
};
void test02()
{
cout << sizeof(Maker2) << endl;
}
int main()
{
test02();//类的成员函数不占用类的大小
system("pause");
return EXIT_SUCCESS;
}
输出结果:
1
请按任意键继续. . .
程序3:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
Maker *m = new Maker[20];//为什么空类是1?因为编译器从内存更好区分对象
}
class Maker2
{
public:
void func()//2.成员函数不占用类的大小
{
}
};
void test02()
{
cout << sizeof(Maker2) << endl;
}
int main()
{
test02();
system("pause");
return EXIT_SUCCESS;
}
输出结果:
1
请按任意键继续. . .
程序4:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
Maker *m = new Maker[20];//为什么空类是1?因为编译器从内存更好区分对象
}
class Maker2
{
public:
//void func()//2.成员函数不占用类的大小
//{
//}
static int a;//3.静态成员变量不占用类的成员大小,静态成员函数不占用类的成员大小
//static void func()//4.静态成员函数不占用类的大小
//{
//}
//int b;//5.普通成员变量占用类的大小
};
int Maker2::a = 100;
void test02()
{
cout << sizeof(Maker2) << endl;
}
int main()
{
test02();
system("pause");
return EXIT_SUCCESS;
}
输出结果:
1
请按任意键继续. . .
程序5:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
Maker *m = new Maker[20];//为什么空类是1?因为编译器从内存更好区分对象
}
class Maker2
{
public:
//void func()//2.成员函数不占用类的大小
//{
//}
//static int a;//3.静态成员变量不占用类的成员大小,静态成员函数不占用类的成员大小
static void func()//4.静态成员函数不占用类的大小
{
}
//int b;//5.普通成员变量占用类的大小
};
//int Maker2::a = 100;
void test02()
{
cout << sizeof(Maker2) << endl;
}
int main()
{
test02();
system("pause");
return EXIT_SUCCESS;
}
输出结果:
1
请按任意键继续. . .
程序6:
#pragma warning(disable:4996)
//2022年9月21日19:20:29
#include <iostream>
using namespace std;
//1.空类的大小是1,不是0
class Maker
{
};
void test01()
{
cout << sizeof(Maker) << endl;
Maker *m = new Maker[20];//为什么空类是1?因为编译器从内存更好区分对象
}
class Maker2
{
public:
//void func()//2.成员函数不占用类的大小
//{
//}
//static int a;//3.静态成员变量不占用类的成员大小,静态成员函数不占用类的成员大小
//static void func()//4.静态成员函数不占用类的大小
//{
//}
int b;//5.普通成员变量占用类的大小
};
//int Maker2::a = 100;
void test02()
{
cout << sizeof(Maker2) << endl;
}
int main()
{
test02();
system("pause");
return EXIT_SUCCESS;
}
输出结果:
4
请按任意键继续. . .
21.C++的对象模型的更多相关文章
- iOS开发进阶
<iOS开发进阶>基本信息作者: 唐巧 出版社:电子工业出版社ISBN:9787121247453上架时间:2014-12-26出版日期:2015 年1月开本:16开页码:268版次:1- ...
- 《iOS开发进阶》书籍目录
第一部分:iOS开发工具 第二部分:iOS开发实践 第10章 理解内存管理 10.1 引用计数 10.1.1 什么是引用计数,原理是什么 10.1.2 我们为什么需要引用计数 10.1.3 不要向已经 ...
- BOM (Browser Object Model) 浏览器对象模型
l对象的角色,因此所有在全局作用域中声明的变量/函数都会变成window对象的属性和方法; // PS:尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的对象是否存 ...
- iOS Objective-C对象模型及应用
前言 原创文章,转载请注明出自唐巧的技术博客. 本文主要介绍Objective-C对象模型的实现细节,以及Objective-C语言对象模型中对isa swizzling和method swizzli ...
- Ruby的对象模型
目录 备注对象模型无图无真相基本规则代码示例如何修改Singleton Class?如何修改类型,如Child?类型方法是特殊的实例方法,这些方法定义在类型的Singleton Class中.备注 备 ...
- gcc下c++的对象模型 (1)
所有示例代码在如下环境中执行 ubuntu 16.04.4 (64位) gcc version 5.4.0 开启std11 gdb version 7.11.1 1. 空类的大小 定义一个空类A,实例 ...
- JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...
- SharePoint2010 对象模型 关联列表
有关列表的创建其实网上已经有很多文章了,其中练习 :利用Visual Studio 2010创建列表这篇文章个人感觉还不错,这里我强调的是对象模型来创建.在这之前我插入一点其他的东东,导入电子表格和数 ...
- JavaScript浏览器对象模型(BOM)之window对象
一.BOM概述 BOM(Browser Object Model)浏览器对象模型,它提供了很多对象,用于访问浏览器的功能. BOM 缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象 ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...
随机推荐
- Delphi中纤程的使用
首先我们来看看纤程的定义 纤程(来自百科): 纤程是Windows为了将Unix服务程序更好的移植到Windows上而创建的, 线程是在Windows内核中实现的,纤程是在用户模式下实现的,内核对纤程 ...
- git拉取远程主支内容,在本地进行修改后,重新提交到新建分支的过程
git拉取远程主支内容,在本地进行修改后,重新提交到新建分支的过程 在本地找一个干净的文件夹 git init 进行初始化 git clone 复制拉取远程的地址 在文件夹中打开,进入复制下来的项 ...
- Dapper修改
<table class="table table-bordered"> <tr> <td>商品名称:</td> <td> ...
- 第08组Beta冲刺(3/4)
队名 八组评分了吗 组长博客链接(2分) 组员1李昕晖(组长) 过去两天完成了哪些任务 文字/口头描述 了解各个小组的进度与难以攻破的地方,晚上安排开会,安排新的冲刺任务. 重新分配小组及个人任务. ...
- Treewidget节点的删除
父节点的删除 // 第一种 // 树状列表父节点的删除 // 有点莽 不支持这种操作 delete ui->treeWidget->topLevelItem(0); // 第二种 QTr ...
- matlab函数学习笔记
数值精度 显示精度由format函数控制,不影响原始数据,只控制显示精度 命令 说明 long short rat 分数 digits vpa pi的输出 命令 显示结果结果 form ...
- Mongodb+Stadio 3
一.安装Mongodb https://www.mongodb.com/download-center/community 请下载对应的系统 安装过程请不要选择 当所有的步骤值完成的时候,找到你的安 ...
- 微信小程序地理定位和城市选择列表
1.先获取用户是否授权地理定位,如果没有让其跳转到设置页面手动开启(获取到的位置是经纬度,需要借助其他地图SDK的地址逆解析获取省市区的名字) getSetting() { wx.getSetting ...
- MySQL日常维护指南
一.常用命令 1.查看数据库默认编码 show variables like 'character%'; show variables like 'collation%'; 2.启动停止数据库 /et ...
- VUE相关面试题目01
一.MVVM是什么; MVC: MVVM的描述: 常见库实现数据双向绑定的效果: 发布订阅模式; ...