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进行遍历: ...
随机推荐
- vue解决点击事件冒泡 .stop
vue解决点击事件冒泡 .stop <div @click="toCourse()" > <van-button type="primary" ...
- memoのcmake和pkgconfig
之前看到过pkgconfig,完全不理解什么东西,也没有去探究这到底是个啥. 然而今天想要cmake brew的库,无意中查到一种解决方案,就是利用pkg-config. 老神奇了. # includ ...
- 替代学习物联网-云服务-04TLINK云MQTT
1.注册TLINK www.tlink.io 记录下登录的用户名,密码.MQTT需要 2.添加设备 3.设备序列号:clientID 4.mqtt.fx调试器 5.订阅主题 在MQTT.fx上,单 ...
- Java输入输出格式
一.输入字符串 Scanner in=new Scanner(System.in); String str1=in.next(); //输入一个字符串,以空格或回车结束 String str2=in. ...
- SpringBatch生成的DB表SQL
SQL: -- Autogenerated: do not edit this file DROP TABLE IF EXISTS BATCH_STEP_EXECUTION_CONTEXT; DROP ...
- DE 算法的变体python实现
上演化计算课的时候老师讲了一种DE算法的改进算法CoDE,于是看了下CoDE的论文中的算法步骤: 算法中使用的三种交叉策略: 根据不同的交叉策略采取不同的变异策略: 超参数的三种不同组合(一一对应): ...
- C语言——数组
一.一维数组 声明形式: type arrayName [ arraySize ]; 实例: 1 #include <stdio.h> 2 int main() 3 { 4 int Arr ...
- centos7.6镜像
centos7.6镜像 https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/
- angular项目语言切换功能
1.NzI18nService服务 参考:https://ng.ant.design/docs/i18n/zh 2.ngx-translate插件 1)安装依赖 npm install @ngx-tr ...
- 如何服务好B端客户
核心价值: 2B公司的核心价值在于服务.如何服务好客户,需要的是了解客户,与客户共赢. 一.客户信任度的建立 服务:不是口头说说,是要落地与实践. 对于客户的承诺至关重要,承诺的时间点.承诺的事情要保 ...