c++之类与对象<二>

目录

 前言

一:类的六个成员默认函数

二:构造函数 

1.概念

2.特征

3.全缺省调用构造函数 

4. 类中无构造函数

三:析构函数

1.概念

2.特征

3.类中无析构函数

四:拷贝构造函数

1.概念

2.特征

 3.类中无拷贝构造函数 

4.拷贝构造的实现场景 

5.举例

五:运算符重载

1.概念

2.注意事项

3.举例

六:日期类 

七:在深层次理解流插入和流提取 

1.理解

2.实现

 八:const成员

1:举例

2.const的使用场景

九:取地址以及const取地址操作符重载


接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

 前言

在经过类与对象的初步了解之后,接下来我们就来研究关于类与对象的“六大天选之子”函数

一:类的六个成员默认函数

二:构造函数 

1.概念

构造函数是一个特殊的成员函数,名字与类名相同,主要任务为初始化对象,在对象整个生命周期内只调用一次

2.特征

1.函数名与类名相同

2.无返回值

3.对象实例化时编译器自动调用对应的构造函数

4.构造函数可以重载,即一个类可以有多个构造函数

3.全缺省调用构造函数 

无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个(不然会造成歧义)。

注意:无参构造函数,全缺省构造函数,我们没写编译器自己默认生成的构造函数,都可以认为是默认构造函数

一般建议:每个类都提供一个默认构造函数

不传参数就可以调用构造函数

4. 类中无构造函数

1.在c++类型分为内置类型和自定义类型,内置类型就是如int,double,char,各种指针等,自定义类型就是用struct,class,union等定义的

1.对于内置类型成员编译器不做处理,为随机值

2.自定义类型的成员,会去调用它的默认构造(不用传参数的构造)

3.为解决内置类型成员的问题,在内置成员声明时给缺省值

三:析构函数

1.概念

与构造函数正好相反,对象在销毁时自动调用析构函数,完成对象中资源的清理工作,局部对象销毁工作是由编译器完成的

2.特征

1.析构函数名是在类名前加~

2.无参数无返回类型

3.一个类只能有一个析构函数,不能重载

4.对象生命周期结束时,c++编译系统自动调用析构函数

3.类中无析构函数

1.在c++类型分为内置类型和自定义类型,内置类型就是如int,double,char,各种指针等,自定义类型就是用struct,class,union等定义的

1.对于内置类型成员编译器不做处理

2.自定义类型的成员,会去调用它的析构函数

四:拷贝构造函数

1.概念

只有单个形参,该形参是对本类类型对象的引用,一般加const修饰再用已存在的类类型对象创建新对象时由编译器自动调用

2.特征

1.拷贝构造是构造函数的一个重载形式

2.拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式会直接报错,因为会引发无穷递归

 3.类中无拷贝构造函数 

1.若未显示定义,编译器会调用默认的拷贝构造函数。默认的拷贝构造函数对象按内存存储按字节需完成拷贝,这种靠被叫做浅拷贝或者值拷贝

2.对于内置类型,编译器可以直接拷贝

3.对于自定义类型,需要调用这个成员拷贝构造

4.拷贝构造的实现场景 

自己实现了析构函数释放空间,就需要实现拷贝构造

5.举例

五:运算符重载

1.概念

c++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,具有返回值类型,函数名以及参数列表

函数原型为 返回值类型 operator 操作符(参数列表)

2.注意事项

1.不能通过连接其他符号来创建新的操作符,比如operator @

2.重载操作符必须有一个类类型参数

3.用于内置类型的运算符,其含义不可改变

4.作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this

5.    .*    ::    sizeof    ?:     .    以上五个运算符不能重载 

6.运算符重载函数可以定义在全局,也可以在类中

3.举例

六:日期类 

 

 

七:在深层次理解流插入和流提取 

在如日期类这样的类中,用d1.Print(),来打印数据显得麻烦,c++中习惯用cout打印数据,如果能实现cout<<d1;这样的话会显得更加方便,代码的可读性更强

1.理解

cout<<i:实际底层为cout.operator<<(i)  //  int的实现方式

cout<<d:底层实现为cout.operator(i)  //double的实现方式

运用的是运算符重载+函数重载

观看官网的介绍得

对于各种内置类型的实现是定义好的 

如cout是在ostream的类中,cin是在istream的类中

2.实现

但对于自定义类型,不能直接访问,需要自己实现

 

定义在全局,并且要访问成员变量使用友元函数 

 八:const成员

1:举例

要解决上述问题就得用  void Print() const ,用const去修饰this指针,然后this的类型为const A*

2.const的使用场景

只要成员函数内部不改变成员变量,最好加上const,const对象和普通对象都可以调用

九:取地址以及const取地址操作符重载

这个函数大概了解即可,不写编译出也会自动生成地址 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“一根盲杖,扫清前进道路”视障人士关爱行动中

近期&#xff0c;红枫林义警服务发展中心联合暨南街道社工站&#xff0c;面向暨南街道辖区内的视障人群&#xff0c;开展了一系列服务&#xff0c;送去了我们的关爱。 首先&#xff0c;我们成功为视障人群链接到了价值1万的爱心物资&#xff0c;捐赠仪式即为本次我们关爱行动的…

Zabbix 配置使用

目录 配置流程 添加组机组 添加模板 添加主机 配置图形 配置大屏 Monitoring 配置地图 最新数据 故障 使用IT服务 使用报表 资产管理 全局搜索 导入导出 用户权限 用户组权限 用户 匿名用户 调试模式 与 LDAP 对接 维护模式 故障确认 批量更新 配置流程…

Stable Diffusion WebUI 生成参数:脚本(Script)——提示词矩阵、从文本框或文件载入提示词、X/Y/Z图表

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 在本篇文章中&#xff0c;我们将深入探讨 Stable Diffusion WebUI 的另一个引人注目的生成参数——脚本&#xff08;S…

Java中的多线程详解(超级简单理解)(上篇)

使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 目录 1.多线程概述 1.1 进程与线程 1.2 多线程的运行机制 1.3 多线程的优势 2.多线程编程 2.1 Thread类介绍 2.2 …

基于Java中的SSM框架实现电能计量与客户服务管理系统项目【项目源码+论文说明】

基于Java中的SSM框架实现电能计量与客户服务管理系统演示 摘要 当前时代的两个突出特征是世界经济一体化和以计算机为代表的信息技术的迅速发展。为了使组织在激烈的竞争中保持实力和发展&#xff0c;它必须对迅速变化的环境做出有效而有效的响应。 管理信息系统的应用可以提供…

Linux系统安装openGauss结合内网穿透实现公网访问本地数据库管理系统——“cpolar内网穿透”

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

6SL3126-1TE21-8AA4单电机模块质保一年

商品编号(市售编号) 6SL3126-1TE21-8AA4 SINAMICS S120 单电机模块 输入&#xff1a;600V DC 输出&#xff1a;3AC 400V,18A 结构形式&#xff1a;书本尺寸 冷板冷却 优化的脉冲图形和 支持扩展 安全集成功能 包含 DRIVE-CLiQ 电缆 列表价&#xff08;不含税&#xff09…

查询正在运行的Top SQL的脚本(建议收藏)

这篇文章提供了一些现成的SQL脚本&#xff0c;通过查询V$SQLSTATS视图找到正在运行的TOP SQL&#xff0c;用于后续的优化。建议大家收藏&#xff0c;需要查询TOP SQL时直接复制和粘贴即可。 之前的一篇文章解释了为什么要使用V$SQLSTATS视图。 当数据库表现出各种不同的性能问…

MATLAB环境基于健康指标(Health indicator)的滚动轴承故障诊断

轴承的剩余使用寿命RUL预测过程一般包括以下三个步骤&#xff1a;&#xff08;1&#xff09;数据采集&#xff0c;&#xff08;2&#xff09;健康指标HI构建&#xff0c;&#xff08;3&#xff09;RUL预测。在预测过程中&#xff0c;RUL并不能直接依靠观测得到&#xff0c;其主…

智慧水务:雨季山区水域水务智能化监控与监测管理方案

一、方案背景 雨季的水务管理对于各区县来说&#xff0c;无疑是一项至关重要的任务。夏季雨水充沛&#xff0c;江河湖泊水位上涨&#xff0c;山洪、上游排水等情况时有发生&#xff0c;给各地的水务设施和防汛工作带来了严峻的挑战。针对区县的各类水域监管场景&#xff0c;需…

欧润金:抗衰生意火爆?抗老制品受富裕中产追捧,抢购难求!

当人们物质财富积累到一定程度后&#xff0c;他们开始踏上“用金钱留住时间”的探寻之路。 亚马逊创始人贝索斯为解锁“青春密码”&#xff0c;投资30亿美元建造生物研究所Alots&#xff1b;硅谷富豪莱恩约翰逊每年豪掷上百万美元&#xff0c;用于自己的健康管理&#xff1b;世…

JavaSE—IO流之字符流

&#x1f4cc; 字符流中的常用类及基本方法&#xff1a; 输入字符流 Reader输出字符流 Writer ○ Reader 的基本方法&#xff1a; • 读取一个字符并以整数的形式返回, 如果返回-1已到输入流的末尾。 int read() throws IOException • 读取一系列字符并存储到一个数组buff…

OPPO案例 | Alluxio在DataAI湖仓一体的实践

分享嘉宾&#xff1a; 付庆午-OPPO数据架构组大数据架构师 在OPPO的实际应用中&#xff0c;我们将自研的Shuttle与Alluxio完美结合&#xff0c;使得整个Shuttle Service的性能得到显著提升&#xff0c;基本上实现了性能翻倍的效果。通过这一优化&#xff0c;我们成功降低了约一…

【免费】教你如何考取腾讯云《云函数 SCF》认证

云函数 SCF考试PC网址 云函数 SCF - 认证中心 - 腾讯产业互联网学堂 (tencent.com) 注&#xff1a;免费认证&#xff0c;里面包含免费的课程&#xff0c;浏览器用Edge。 文章目录 目录 文章目录 前言 一、备考流程 二、注意事项 总结 前言 随着云计算的不断发展&#xf…

基于word2vec+LSTM模型实现百度贴吧恶意评论预测

大家好&#xff0c;我是带我去滑雪&#xff01; Word2Vec模型能够将词语映射到高维空间中的向量表示&#xff0c;同时保留了词语之间的语义信息和上下文关系。这使得模型能够更好地理解评论中的语境和含义。LSTM模型是一种适用于处理序列数据的深度学习模型&#xff0c;能够有效…

面对淘天的升级,如果说我们要在渠道运营端口做出一些改变,最重要、最应该、最优先的是什么?|淘天商品API数据采集接口

2024年&#xff0c;电商真正跨入了新AI时代。 在这个新时代&#xff0c;工具、方法、体系……都在升级&#xff0c;堪称一日千里。 商家如何更好地顺应时代的变化&#xff1f;2024年&#xff0c;我给大家的建议总结为两句话。 第一句是借平台的红利&#xff1b; 第二句是建立自…

【VTKExamples::Points】第十期 NormalEstimation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例NormalEstimation,并解析接口vtkPCANormalEstimation,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力…

I.MX6ULL_Linux_驱动篇(55)linux 网络驱动

网络驱动是 linux 里面驱动三巨头之一&#xff0c; linux 下的网络功能非常强大&#xff0c;嵌入式 linux 中也常常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动&#xff0c;本章我们就来学习一下linux 里面的网络设备驱动。 嵌入式网络简介 网络硬件接口 首先…

【C语言】tcp_sendmsg_locked

一、讲解 tcp_sendmsg_locked 函数是 Linux 内核中实现 TCP 数据发送的一个核心函数。这个函数被调用来将用户空间的数据通过 TCP 发送出去。以下是该函数的基本工作流程的中文解释&#xff1a; 1. 函数初始化和检查&#xff1a; - 它首先检查是否使用了 TCP 零拷贝发送&am…

【微服务】Spring Boot 版本升级到 2.7.18

前言 目前项目上扫描出一些 Java 依赖的代码漏洞&#xff0c;需要对现有依赖版本升级&#xff0c;记录一下遇到的问题。 <spring-boot.version>2.3.2.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> <s…