C++类和对象的基础介绍(1)

news2024/11/15 19:58:25

类的定义

C++类的关键字是class,学过c的朋友们可能会觉得和结构体struct有点像。

在C++中struct也可以定义类,但和class定义的有所区别。

我们还是推荐使用class。

类里面会有成员变量、成员函数的定义和声明、构造函数、拷贝构造函数、析构函数、运算符重载函数等等。。待会你就知道啦.

下面以日期类为例讲解类。

类的基本格式

class Date
{

};

class+类的名字+{},记得花括号之后要有英文的逗号。

类的内容就写在花括号里面。

类域(访问限定符)

类定义了一个新的作用域,

类的默认访问权限是私有的(private),

类外的函数无法访问类内的东西,

看下面这段代码

class Date
{
public:
	Date();//构造函数
	~Date();//析构函数

private:
	int _year;
	int _month;
	int _day;
};

把注意力放在public和private,这俩就是访问限定符。

有了public ,在类外就可以访问Date()和~Date().

有了private,只有在类内才能访问_year,_month,_day.

给大家看看private是如何限制类外访问的。。

如果把_year的声明放到public访问限定符之下,

编译器就不会报错了。。

类和对象

刚刚我们创建了Date类,

d1,d2,d3,都是Date类实例化的对象。

一个Date类实例化出3个对象d1,,d2,d3.

一个类可以有多个对象。

构造函数

构造函数的名字和类名一模一样,

我们定义对象时,什么参数都不传,

系统会帮我们生成无参的构造函数。

不传参数就可以调用的构造函数叫做默认构造,

以Date类为例,

以下三种构造函数都是默认构造函数。

这三种默认构造函数只能写一种。

当我们这样定义d1时,什么参数都没传,就会调用默认构造函数。。

当然我们还是建议定义时传参,就像下面这样:

析构函数

析构函数的主要用处在于,当你开辟了一块内存空间,用完了要记得释放。。

如:

class Date
{
public:
	int* _year;
	int* _month;
	Date()
	{
		_year = (int*)malloc(sizeof(12));//开空间
		_month = new int[4];//开空间
	}
	~Date()
	{
		free(_year);//释放空间
		_year = nullptr;
		delete[]_month;//释放空间
	}
};

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

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

相关文章

迈巴赫S480升级大柏林音响31个喇叭8个座椅震动加上后排按摩座椅更加舒适

迈巴赫 S480 改装大柏林音响的改装案例: 改装前的车辆音响系统: 迈巴赫 S480 原车配备了 15 个喇叭的小柏林音响系统。 改装方案: 1. 扬声器升级:将原车的小柏林音响全部拆下,更换为大柏林的扬声器。大柏林音响系统…

SCMsafe链四方参展2024第三届医药供应链创新大会

024年8月22日-24日,由智慧医药主办,多家行业协会、研究机构、生产、流通及供应链公司协办的2024第三届医药供应链创新大会在杭州召开。 会议以“正在遇见的革命”为主题,聚焦生产、流通及终端医药供应链热点、痛点政策和市场话题,…

opencv实战项目十五:钢材表面缺陷检测

文章目录 前言一、算法实现流程:二,算法详解:2.1 二值化与去噪2.2 形态学处理 三,整体代码实现: 前言 随着科技的不断进步,自动化和智能化在工业生产中的应用越来越广泛。在钢材生产过程中,钢材…

认知杂谈33

今天分享 有人说的一段争议性的话 I I 《说话影响命运,得小心》 嘿,你想想看,咱平常不经意说的那些话,就像小种子一样。你可能没当回事,可说不定啥时候,这些话就会在生活里生根发芽,最后生活…

继承—构造函数—引用等

继承时,数据成员,函数成员全盘接收,如果碰见同名成员屏蔽基类成员。 1,无论采取什么继承方式,基类中所有数据成员都将继承到派生类 2,在类型的继承层次里,保护属性当作共有属性使用 3&#x…

Xv6驱动(一):PLIC

PLIC内存布局 #define PLIC 0x0c000000L #define PLIC_PRIORITY (PLIC 0x0) #define PLIC_PENDING (PLIC 0x1000) #define PLIC_SENABLE(hart) (PLIC 0x2080 (hart) * 0x100) #define PLIC_SPRIORITY(hart) (PLIC 0x201000 (hart) * 0x2000) #define PLIC_SCLAIM(hart) …

前端算法 ==== 栈的好戏还要继续!| 1047. 删除字符串中的所有相邻重复项

目录 解题 思路 题外话 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 输入&a…

E-Prime2中同时识别大小写字母与中文支持设置

识别大小写 起因是在学习Eprime过程中发现,一开始只设置了键盘反应为q,然后当键盘为大写状态时,按Q不会响应,后来看到可以同时设置Qq,并且也能读取,简单试了一下,发现有必要在其他地方也这么设…

Multi-class Token Transformer for Weakly Supervised Semantic Segmentation

code:https://github.com/xulianuwa/MCTformer 摘要 本文提出了一种基于Transformer的新框架,用于学习类别特定的对象定位图,并将其作为弱监督语义分割(WSSS)的伪标签。受到标准视觉Transformer中单类别token的关注区…

SpringBoot天猫商城基于前后端分离+SpringBoot+BootStrap、Vue.js、JQuery+JPA+Redis

SpringBoot天猫商城整站 一、项目介绍和演示 SPRINGBOOT天猫整站,基于 前后端分离思想, 由于该商城高并发的特点,后端框架便使用了方便维护的 SpringM VC、SpringBoot框架,而前端框架则选择了主流的BootStrap、Vue.js,…

虚拟机扩展分区

1、删除快照后 先扩展 虚拟机空间 2、 创建分区 rootlocalhost /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 99.5G 0 part ├─VolGroup-lv_root (dm-0) 249:0 0 50G 0 lvm / ├─VolGroup-lv…

网络防火墙的主要功能及其弊端

防火墙(Firewall),也称防护墙,是由Check Point 创立者Gil Shwed于1993 年发明并引入国际互联网。 它是一种位于内部网络与外部网络之间的网络安全系统。是一项信息安全的防护系统,依照特定的规则,允许或是限…

【python】时间序列模型(ARIMA)

文章目录 前言一、示例二、代码实现----python全部数据的平稳性检验划分训练集平稳性检验确定 p,q结果分析和模型检验模型预测 前言 接上一篇博客,用python完成代码编写。 【学习笔记】时间序列模型(ARIMA) 一、示例 已知一个上市公司一段时期的开盘价…

leetcode 数组+哈希+双指针+子串+滑动窗口

——————双指针 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …

AI大模型日报#0820:DeepMind创始人访谈、阿里多模态mPLUG-Owl3、抱抱脸SOTA小模型

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)、“智谱AI”(glm-4-0520)生成了今日要点以及每条资讯的摘要。欢迎阅…

linux文件——文件系统——学习硬件:磁盘

前言:本节将带领友友们认识计算机外设中的——磁盘。 目的是为后面学习文件系统打好基础。认识磁盘我们将从——磁盘的组成、磁盘的逻辑结构两个方面进行讲解。 下面开始我们的学习吧。 ps:本节适合所有阶段的友友们学习哦, 友友们可以在本篇…

推荐几款论文初稿ai工具,一键生成!

开题报告-科研加速秘籍:AI论文写作工具推荐! 在科研的世界里,论文写作是不可或缺的一部分。 然而,很多时候我们在开题报告的编写上就遇到了巨大的挑战。 别担心,今天我要分享这个工具来帮助你轻松应对这个问题。 通过…

(java)动态代理

1.思想分析 不能修改原有的代码: 代理:相当于中介公司 代理:转移职责 代理:做准备工作 调用对象中的方法 代理:通过接口--接口中的方法就是要代理的方法

JVM类加载机制—类加载器和双亲委派机制详解

一、概述 上篇我们介绍了JVM类加载机制—JVM类加载过程,类加载过程是类加载机制第一阶段,这一阶段主要做将类的字节码(class文件)加载JVM内存模型中,并转换为JVM内部的数据结构(如java.lang.Class实例&…

Java常用工具类之Date类和Calender类

1、 Date类中常用方法 1. Date类的常用方法 Date类的常用方法 方法 含义 new Date() 实例化Date对象,常见于获得系统当前时间 new Date(long time) 实例化Date对象,并根据具体的时间偏移量time设置时…