类的实例化

news2024/12/27 13:02:08

类的实例化

class Date
{
public:
	void Init(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}


private:
	int _year;
	int _month;
	int _day;     //这只是函数的一个声明并没有定义
};

上面是一个类,我们可以把有花括号括起来的叫做一个域,所以我们叫可以叫上面的Date叫类域
既然是域,那我们可以用访问域的方法来访问上面的类域吗?
我们试一试:

我们输入:Date::_year;

发现编译器会报错。
在这里插入图片描述
在这里插入图片描述

这是为什么?

因为类中:只是变量的一个声明而已,并不是变量的定义。

变量的定义会开空间,而只是声明则不会开辟空间

所以我们定义一下就可以解决这个问题:

那什么时候才是定义呢?

Date d

这样就行了,对象的定义也就叫对象的实例化

这样就会开空间出来。
在这里插入图片描述

下面我们思考一个问题:类Date 和类实例化后的对象:d1 所占的空间是多少?

#include<iostream>
using namespace std;
class Date
{
public:
	void Init(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}


private:
	int _year;    //int 整型 4个字节
	int _month;
	int _day;     
};


int main()
{
	Date d1;
	d1.Init(2023, 7, 9);

	Date d2;
	
	cout << sizeof(Date) << endl;
	cout << sizeof(d1) << endl;
	return 0;
}

答案是12 还是 16 ?

在这里插入图片描述
你会感到疑惑,private中的三个整型加起来就是12了,还有一个函数呢?,难道函数不死存放在这个类里面的吗?

是的,为了避免空间的浪费,会把函数存在公共的代码区

判断一下,下面的类有多少个字节?

//类中既有成员函数又有函数变量
class A1 {
public:
	void f1() {}
private:
	int _a;
};

// 类中仅有成员函数
class A2 {
public:
	void f2() {}
};
// 类中什么都没有---空类
class A3
{};

sizeof 输出的结果是:

cout << sizeof(A1) << endl;

	cout << sizeof(A2) << endl;

	cout << sizeof(A3) << endl;

在这里插入图片描述

为啥,你说A1是4都还好理解,但是A2,A3是怎么回事?
之前说过成员函数不是存放在类里面的,所以A2中有个成员函数不影响。
A2 和 A3 的字节数是一样的,但是,为什么是1 不是 0 ?
A3 中啥都没有呀?
因为 这一个字节是用来占位 的。c++ 针对这种没有成员变量的类,给它分配了一个字节用来占位, 这一个字节并不是用来存储数据的,只是表示这个类存在过。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python scrapy框架实现某品牌数据采集

某品牌数据采集 采集需求 地址&#xff1a;http://www.winshangdata.com/brandList 需求&#xff1a;用scrapy框架采集本站数据&#xff0c;至少抓取5个分类&#xff0c;数据量要求5000以上 采集字段&#xff1a;标题、创建时间、开店方式、合作期限、面积要求 网页分析 …

HawkEye设备智能维保平台:助力制药行业设备管理实现数字化转型

随着科技的不断进步和市场竞争的日益激烈&#xff0c;制药行业的设备管理的数字化转型已经成为一个不可逆转的趋势。尤其是在疫情时代&#xff0c;制药企业肩负着重大的社会责任&#xff0c;致使其设备管理的数字化转型之路迫在眉睫。 设备管理的数字化不仅可以提高企业的生产效…

Java实战之网上书店管理系统的实现

目录 1.效果展示2.需求功能3.系统总体设计及部分代码 3.1登录模块设计3.2新用户的注册3.3图书添加模块3.4图书添加事件3.5买家信息维护3.6订单管理模块4.数据库设计 4.1系统数据库设计4.2系统E-R图设计5.JDBC连接数据库 1.效果展示 2.需求功能 用户可以进行注册登陆系统&…

文心大模型企业应用私享会·上海站:共话大模型前沿技术与产业应用创新

当前&#xff0c;人工智能已经成为新一轮科技革命和产业变革的重要驱动力量&#xff0c;基于强算法、大算力和大数据的大模型成为人工智能发展的主流方向。 7月28日下午&#xff0c;“文心大模型企业应用私享会-上海站”于百度飞桨&#xff08;张江&#xff09;人工智能产业赋能…

如何压缩图片大小?最新图片压缩技巧分享

现在很多平台对于上传的图片大小都有限制&#xff0c;比如不能超过20k&#xff0c;当图片大小超出该值时就需要进行压缩&#xff0c;下面就针对这个问题给大家分享几个简单实用的图片压缩方法&#xff0c;需要的朋友一起来Get吧~ 一、画图工具 画图是Windows系统自带的工具&am…

BugKu CTF(杂项篇MISC)—善用工具

BugKu CTF(杂项篇MISC)—善用工具 描 述: webp。 下载压缩包。解压得到以后3个文件。 一、工具 十六进制编辑工具 010 editor Free_File_Camouflage图片隐写工具 二、解题思路 1.先看看hint.png&#xff0c;发现打不开&#xff0c;用010 editor编辑器打开是乱码。属性也没…

ipad手写笔有必要买苹果原装吗?平价电容笔推荐

目前&#xff0c;市场上的电容笔品牌越来越多&#xff0c;我们在挑选的时候&#xff0c;很容易就会被坑&#xff0c;比如说&#xff0c;我们买到的那些书写时经常会写字断触&#xff0c;或是防误触功能失效。因此我们在购买时一定要擦亮眼睛。至于那些把ipad当成学习工具的人&a…

展销系统springboot vue展会新闻场地管理java源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 展销系统springboot vue 系统有3权限&#xff1a;管理…

【Java练习题汇总】《第一行代码JAVA》综合测试三,汇总Java练习题

Java练习题 综合测试三 1️⃣ 综合测试三 1️⃣ 综合测试三 线程的启动方法是( )。 A. run() B. start() C. begin() D. accept() Thread 类提供表示线程优先级的静态常量&#xff0c;代表普通优先级的静态常量是( )。 A. MAX_PRIORITY B. MIN_PRIORITY C. NORMAL_PRIORITY D…

亚马逊怎么样下单风控最低

在下单过程中&#xff0c;亚马逊会使用风控措施以保护用户和平台的安全。这些风控措施可能会随着时间和情况的变化而调整&#xff0c;因此最低风控标准也可能会随之改变。 要确保顺利下单&#xff0c;你可以尝试遵循以下几点建议&#xff1a; 1、使用真实有效的个人信息&#…

限流式保护器在古建筑电气火灾中的应用

安科瑞 华楠 【摘要】针对文物古建筑本身火灾危险性大&#xff0c;并且其内部电气问题较多&#xff0c;增加了火灾危险性的特点&#xff0c;提出了预防电气火灾的措施。 【关键词】古建筑&#xff1b;电气防火&#xff1b;限流式保护器&#xff1b; 文物古建筑是中华民族历史文…

Spring的@Scheduled

Spring的Scheduled的默认线程池数量为1&#xff0c;也就是说定时任务是单线程执行的。这意味着最多同时只有一个任务在执行。当一个任务还在执行时&#xff0c;其他任务会等待其完成&#xff0c;然后按照其预定的执行策略依次执行。 测试代码&#xff1a; 启动类上加注解Enab…

ffmpeg + nginx 实现rtsp视频流转m3u8视频流,转码推流(linux)

FFmpeg即是一款音视频编解码工具&#xff0c;同时也是一组音视频编码开发套件&#xff0c;作为编码开发套件&#xff0c;它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg提供了多种媒体格式的封装和解封装&#xff0c;包括多种音视频编码、多种协议的流媒体、多种多彩格式…

【Spring框架】SpringMVC

目录 什么是Spring MVC实现客户端和程序之间的“连接”1.1 RequestMapping1.2GetMapping1.3PostMapping 获取参数2.1.1 获取单个参数2.1.2 获取多个参数2.1.3 获取对象2.2 后端参数重命名2.3 RequestBody 接收JSON对象2.4 获取URL中参数PathVariable2.5 上传⽂件RequestPart2.6…

机器学习深度学习——数值稳定性和模型化参数(详细数学推导)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——Dropout &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 这一部…

Leetcode每日一题:141. 环形链表、142. 环形链表 II、143. 重排链表(2023.7.29、30、31 C++)

目录 141. 环形链表 问题描述&#xff1a; 实现代码与解析&#xff1a; 快慢指针&#xff1a; 原理思路&#xff1a; 142. 环形链表 II 问题描述&#xff1a; 实现代码与解析&#xff1a; 快慢指针 原理思路&#xff1a; 143. 重排链表 题目描述&#xff1a; 实现…

Flask简介与基础入门

一、了解框架 Flask作为Web框架&#xff0c;它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 1、一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序…

HW2: LibriSpeech phoneme classification

任务描述 音位分类预测&#xff08;Phoneme classification&#xff09;&#xff0c;通过语音数据&#xff0c;预测音位。音位&#xff08;phoneme&#xff09;&#xff0c;是人类某一种语言中能够区别意义的最小语音单位&#xff0c;是音位学分析的基础概念。每种语言都有一套…

【CesiumJS材质】(2)图片横向移动

效果示例 要素说明&#xff1a; 代码 /** Date: 2023-07-19 11:15:22* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-28 12:08:58* FilePath: \cesium-tyro-blog\src\utils\Material\FlowPictureMaterialProperty.js* Description: 流动纹理/图片材质*/ imp…

PySpark 数据操作(综合案例)

搜索引擎日志分析 要求&#xff1a; 读取文件转换成RDD&#xff0c;并完成&#xff1a; 打印输出&#xff1a;热门搜索时间段&#xff08;小时精度&#xff09;Top3打印输出&#xff1a;热门搜索词Top3打印输出&#xff1a;统计黑马程序员关键字在哪个时段被搜索最多将数据转…