fegin需要实现类_学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!

2023-11-08

一、"类" 的介绍

在C++中, 用 "" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。"都有质量"、"两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法

类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法。以 "人类" 这个类来说, 每个人都有自己的姓名、年龄、出生日期、体重等, 为 人类 的属性部分, 此外, 人能够吃饭、睡觉、行走、说话等属于人类所具有的行为。

上面举例中所描述的 "人" 类仅仅是具有人这种对象的最基础的一些属性和行为, 可以称之为人的"基类"。 再说说一些具有一些职业的人, 例如学生, 一个学生还具有"基类"中所没有的属性, 如学校、班级、学号; 也可以具有基类所不具有的行为, 如每天需要去上课, 需要考试等。

学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"派生类"或者"子类"。在学生的基础上海可以进一步的扩展出其他更高级的类, 如"研究生"类。

到此,,我们不再更深的去介绍类的其他相关知识。

二、C++类的定义

C++中使用关键字 class 来定义类, 其基本形式如下:

说明:

①. 类名 需要遵循一般的命名规则;

②. publicprivate 为属性/方法限制的关键字, private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本类内部访问; 而 public 表示公开的属性和方法, 外界可以直接访问或者调用。

一般来说类的属性成员都应设置为private, public只留给那些被外界用来调用的函数接口, 但这并非是强制规定, 可以根据需要进行调整;

③. 结束部分的分号不能省略。

类定义示例:

定义一个点(Point)类, 具有以下属性和方法:

■ 属性: x坐标, y坐标

■ 方法: 1.设置x,y的坐标值; 2.输出坐标的信息。

实现代码如下:

代码说明:

上段代码中定义了一个名为 Point 的类, 具有两个私密属性, int型的xPos和yPos, 分别用来表示x点和y点。在方法上, setPoint 用来设置属性, 也就是 xPos 和 yPos 的值; printPoint 用来输出点的信息。

类在定义时有以下几点需要注意:

①. 类的数据成员中不能使用 auto、extern和register等进行修饰, 也不能在定义时进行初始化, 如 int xPos = 0; //错;

②. 类定义时 private 和 public 关键词出现的顺序和次数可以是任意的;

③. 结束时的分号不能省略, 切记!

三、C++类的实现

在上面的定义示例中我们只是定义了这个类的一些属性和方法声明, 并没有去实现它, 类的实现就是完成其方法的过程。类的实现有两种方式, 一种是在类定义时完成对成员函数的定义, 另一种是在类定义的外部进行完成。

1>. 在类定义时定义成员函数

成员函数的实现可以在类定义时同时完成, 如代码:

运行输出:

与类的定义相比, 在类内实现成员函数不再是在类内进行声明, 而是直接将函数进行定义, 在类中定义成员函数时, 编译器默认会争取将其定义为 inline型函数。

2>. 在类外定义成员函数

在类外定义成员函数通过在类内进行声明, 然后在类外通过作用域操作符 :: 进行实现, 形式如下:

返回类型 类名::成员函数名(参数列表)

将示例中的代码改用类外定义成员函数的代码:

依 setPoint 成员函数来说, 在类内声明的形式为 void setPoint(int x, int y); 那么在类外对其定义时函数头就应该是 void Point::setPoint(int x, int y) 这种形式, 其返回类型、成员函数名、参数列表都要与类内声明的形式一致。

四、C++类的使用

将一个类定义并实现后, 就可以用该类来创建对象了, 创建的过程如同 int、char 等基本数据类型声明一个变量一样简单, 例如我们有一个Point类, 要创建一个Point的对象只需要:

Point 对象名;

创建一个类的对象称为该类的实例化, 在创建时我们还可以对对象的属性进行相关的初始化, 这样在创建完成后该对象就已经具有了一定得属性, 这种创建方式将在下一篇博文中进行学习。

将类进行实例化后系统才会根据该对象的实际需要分配一定的存储空间。这样就可以使用该对象来访问或调用该对象所能提供的属性或方法了。

还以上面的代码为例, 为了减少篇幅, 我们把 Point 类的实现放在 Point.h 头文件中, 这里不再贴出 Point 类的实现代码。

代码在编译时会出现错误, 提示 error: 'int Point::xPos' is private, 这是 cout<< M.xPos <<endl; 这行造成的, 他试图访问一个 private 对象中的私密数据 xPos, 如果将这行去掉便可正常运行。

通过 对象名.公有函数名(参数列表); 的形式就可以调用该类对象所具有的方法, 通过 对象名.公有数据成员; 的形式可以访问对象中的数据成员。

五、对象的作用域、可见域与生存周期

类对象的作用域、可见域以及生存周期与普通变量的保持相同, 当对象生存周期结束时对象被自动撤销, 所占用的内存被回收, 需要注意的是, 如果对象的成员函数中有使用 new 或者 malloc 申请的动态内存程序不会对其进行释放, 需要我们手动进行清理, 否则会造成内存泄露。

我是一名从事了10年开发在退休边缘垂死挣扎的高龄程序员,最近我花了一些时间整理了一个完整的学习C语言、C++的路线,项目源码和工具。对于想学习C/C++的小伙伴而言,学习的氛围和志同道合的伙伴很重要,笔者推荐一个C语言/C++编程爱好者的聚集地>>>C/C++编程技术学习交流聚集地,还有素材笔记源码和志同道合的小伙伴们!

欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以一起学习!

喜欢小编的记得动动您的小指点个关注哟!最后分享一个学习路线给爱学习的小伙伴们 ~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fegin需要实现类_学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点! 的相关文章

  • 深度学习------tensorflow2.0:RNN单词预测,句子预测,股票预测

    1 单词预测 import tensorflow as tf from tensorflow keras layers import Dense Activation from tensorflow keras models import
  • 03C++核心编程——黑马程序员

    C 核心编程 本阶段主要针对C 面向对象编程技术做详细讲解 探讨C 中的核心和精髓 1 内存分区模型 C 程序在执行时 将内存大方向划分为4个区域 代码区 存放函数体的二进制代码 由操作系统进行管理的 全局区 存放全局变量和静态变量以及常量
  • python自带的解释器和编辑器叫什么_02-Python解释器和编辑器介绍

    Python解释器和编辑器介绍 解释器 python 这个解释器 是用C语言开发的 也叫 CPython 在命令行下运行 python 就是启动 CPython解释器 CPython 是使用最广的 Python解释器 教程的所有代码也都在
  • SQL的多表查询(笛卡尔积原理)

    MySQL的多表查询 笛卡尔积原理 先确定数据要用到哪些表 将多个表先通过笛卡尔积变成一个表 然后去除不符合逻辑的数据 根据两个表的关系去掉 最后当做是一个虚拟表一样来加上条件即可 注意 列名最好使用表别名来区别 笛卡尔积 Demo 左 右
  • 2023年自然语言处理与信息检索国际会议(ECNLPIR 2023)

    会议简介 Brief Introduction 2023年自然语言处理与信息检索国际会议 ECNLPIR 2023 会议时间 2023年9月22日 24日 召开地点 中国杭州 大会官网 ECNLPIR 2023 2023 Eurasian
  • 【C++】随机数rand( ) 和 随机数引擎

    rand 基本 使用随机数时 经常见到的是C标准库提供的函数rand 这个函数会生成一个0到RAND MAX 32767 之间的一个整形数 分布 为了得到一个给定范围内的随机数 通常会对生成的随机数取余 rand n rand n m m
  • 【电路设计】单节锂电池使用

    前言 最近在研究如何利用单节锂电池给3 3V单片机供电 找到两个比较好的教程 单节锂电池如何转3 3V 升压还是降压 锂电池接了保护板 就可以用五伏电压直接充电了吗 其中上面提到的LDO 这里有一个型号 ME6209 MP2155应用示例
  • nacos启动报错Fail to init node, please see the logs to find the reason.

    启动程序路径不能有中文名
  • 数据库SQLserver期末复习重点汇总

    数据库的三级模式结构 外模式 gt 概念模式 gt 内模式 模式也称概念模式或逻辑模式 是对数据库中全部数据的逻辑结构和特征的描述 是所有用户的公共数据试图 内模式也称存储模式或物理模式 是对数据物理结构和存储方式的藐视 是数据在数据库内部
  • ES6语法说明

    一 ES6语法说明 1 let 变量声明 let a b c let d 1 f 一 g let 不能重复声明 let start liu let start yuan 错误的 已经声明过的变量名 不存在变量提升 关键字let 不能先使用
  • 5.1 综合案例- 将温湿度数据发送到云端(2.2版本接口有更新)

    综合案例 将温湿度数据发送到云端 案例说明 功能实现 1 物联网平台开发 2 设备端开发 2 代码 3 测试效果 案例说明 温湿度传感器测量当前温湿度 将实时温湿度信息上传云端 从而实现云端的监管 传感器使用详见3 11 haas506 2
  • centos7安装配置hadoop-3.2.2(单机安装、伪分布式安装)

    前言 看着官网的教程还是有坑的 so总结了一下 一 环境准备 centos7 hadoop3 2 2 jdk1 8 yum install rsync y ssh 最小化安装的系统中已有ssh 不用安装 二 开始安装 1 首先安装rsync
  • 华为OD机试 - 数大雁(Python)

    题目描述 一群大雁往南飞 给定一个字符串记录地面上的游客听到的大雁叫声 请给出叫声最少由几只大雁发出 具体的 1 大雁发出的完整叫声为 quack 因为有多只大雁同一时间嘎嘎作响 所以字符串中可能会混合多个 quack 2 大雁会依次完整发
  • OSPF详解(HCIP)

    学习目标 1 了解OSPF基本特性 2 了解OSPF邻接关系建立流程 3 了解OSPF报文 4 了解1类到7类LSA 5 OSPF矢量图画法 6 OSPF不规则区域解决方法 7 OSPF网络类型 8 OSPF特殊区域特性 一 OSPF基本特
  • JAVA 记录内网服务通过外网服务获取文件流

    公司项目遇到 对接第三方接口时需要根据链接获取网络文件保存到我们自己的服务器 但是本服务无法访问外网 只能通过请求另一个服务去访问外网 故准备由外网服务获取网络文件并将文件流推送回内网服务进行保存 外网服务接口 RestController
  • 华为OD机试 C++【代表团坐车】

    题目 一场大会上 有好几个代表团同时到达 接待处的问题是 只有一辆车去接 而这车的座位是有限的 你的任务是帮助接待员算出 有多少种方法可以让这车的座位恰好坐满 不多也不少 限制条件 每个代表团的人数都不会超过车的总座位数 每个代表团的人数和
  • 算法:图解位运算以及鸽巢原理应用

    文章目录 实现原理 基础位运算 位图思想 找最右侧数 按位异或 算法思路 典型例题 基础位运算 只出现一次的数字 只出现一次的数字III 经典题型 判断字符是否唯一 两整数之和 只出现一次的数字II 消失的两个数字 鸽巢原理 总结 本篇总结
  • visual studio2019下配置openCV

    openCV系列文章目录 文章目录 openCV系列文章目录 前言 一 解决办法 二 使用步骤 1 引入库 2 读入数据 运行结果 注意 工程源码下载 前言 我们使用CMake编译openCV源码 后会生成lib dll库 但是我发现在我的
  • emoji表情符号有时不能正常显示的问题的解决方案

    1 emoji表情符号应用场景及遇到的问题 emoji表情符号使用的场景 前端页面将用户带有emoji表情符号的留言发送给后端保存后 前端页面从后端获取留言再次展现 但是到再次从后端获取留言展示时 emoji表情符号不能正确展示 估计是后端

随机推荐

  • 操作系统第一章操作系统引论作业

    操作系统第一次课程作业 1 如果计算机不配操作系统 用户编写程序与运行程序需经历怎样的过程 需要人工操作 需要编写机器语言 需要脱机输入输出 2 什么是操作系统 它有什么基本特征 列举4种操作系统的名称 操作系统是管理计算机硬件与软件资源的
  • AcDbTable

    AcDbTable pTab new AcDbTable AcGePoint3d pInsert AcGePoint3d 0 0 0 AcDbDictionary pDict NULL 格式设置 AcDbObjectId idTblStyl
  • 简述for in 和 for of 的区别

    1 推荐在循环对象属性的时候使用 for in 在遍历数组的时候的时候使用 for of 2 for in 循环出的是 key for of 循环出的是 value 3 注意 for of 是 ES6 新引入的特性 修复了 ES5 引入的
  • Python科学计算的瑞士军刀——Anaconda 安装与配置

    Introduce Python是一种强大的编程语言 其提供了很多用于科学计算的模块 常见的包括numpy scipy和matplotlib 要利用Python进行科学计算 就需要一一安装所需的模块 而这些模块可能又依赖于其它的软件包或库
  • 数据库优化、索引【面试题】

    目录 数据库调优的目标 索引覆盖是什么 最左缀原则是什么 哪些因素可能会造成Mysql性能问题 如果sql语句需要使用联表查询我们如何进行优化呢 Mysql常见优化手段 你从哪些方面去优化你的数据库 一个页面响应很慢 你按照什么顺序去排查
  • java 微信请求_微信小程序请求微信api授权登录(Java后端)

    1 小程序端调用wx login 获取到微信返回的code临时凭证 2 小程序端调用我方的后台接口 Java后端调用微信的api 需要appId appSecret js code grant type authorization code
  • 简单易用的公司网页模板,助您快速建站

    在当今数字化时代 拥有一个高质量的公司网页是每个企业成功的关键 然而 对于那些没有技术专业知识的人来说 创建一个专业的网页可能是一项艰巨的任务 但是 现在有许多简单易用的公司网页模板可用于帮助您快速建站 下面 我们将简单地介绍一下如何利用这
  • 合并链表(C++)

    合并两个排序的链表 剑指Offer 25 问题描述 输入两个递增排序的链表 合并这两个链表并使新链表中的节点仍然是递增排序的 示例 输入 1 gt 2 gt 3 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt
  • 【毕业设计】Python_基于DFM模型AHP算法的学生消费行为分析

    资源下载 https download csdn net download wouderw 87402799 1 分析学生消费行为的目的 1 分析学生的消费行为和食堂的运营状况 为食堂运营提供建议 2 根据学生的整体校园消费行为 选择合适的
  • DOTA: A Large-scale Dataset for Object Detection in Aerial Images 翻译

    DOTA 用于航空图像中目标检测的大规模数据集 原文 https arxiv org pdf 1711 10398 pdf 官网 https captain whu github io DOTA dataset https captain
  • 链栈的实现--C 语言版,详细讲解+代码实现

    顺序栈的实现 C 语言版 详细讲解 代码实现 例如 第一章 Python 机器学习入门之pandas的使用 文章目录 顺序栈的实现 C 语言版 详细讲解 代码实现 前言 一 结构体定义 二 操作步骤 1 初始化 2 判断栈是否为空 3 入栈
  • 悬铃木超级计算机,陈根:“九章”攻擂“悬铃木”,快一百亿倍的量子霸权

    文 陈根 2019年 谷歌率先宣布实现 量子霸权 量子优越性 一把把量子计算推入公众视野 激起量子计算领域的千层浪 就在近日 中国团队宣布量子计算机 九章 问世 挑战谷歌 量子霸权 实现算力全球领先 九章 作为一台76个光子100个模式的量
  • CCP学习二——通信流程

    1 概述 CCP通信按信息传输方式分为 POLLING 问答 和DAQ方式 按功能模式分为三种 SESSION 会话 CAL 标定 DAQ 查询 工作流程一般为 程序初始化完成后 通过SET S STATE设置节点当前工作状态 Sessio
  • 做研究与写论文【周志华教授】

    本文内容来自于周志华老师在2007年的报告 做研究与写论文 首先讲到研究与研发的区别 其主要区别在于 新 研究 发现新知识 发明新技术 研发 根据已有知识和技术进行研制 开发 科学研究可以扩展人类的知识 没有科学研究就没有技术进步 如何做研
  • 阿里云服务器ECS装好宝塔 但访问不了面板的解决方法

    下载宝塔桌面助手 然后连接你是阿里云服务器输入命令 Centos安装脚本yum install y wget wget O install sh http download bt cn install install sh sh insta
  • 2021-09-06 (1)

    关于计算机的硬盘序列号查找方法 最近应导师要求 帮他查一下计算机的硬盘序列号和Mac地址 咱也没查过 就网上冲浪了一番 结合自己部分使用体验总结为以下三种方法 1 wmic diskpart get serialnumber详细步骤如下 w
  • SpringBoot实现电子发票生成

    在本文中 我们将介绍如何使用Spring Boot开发一个仿真电子发票生成的应用程序 我们将会使用vue作为前端框架 后端使用Spring Boot 并借助微信二维码扫描功能来确保每个发票都是唯一 有效的 此外 我们还将介绍如何使用第三方库
  • Pandas DataFrame处理数据——列处理

    目录 一 插入数据为列 二 新增或修改列 三 对整列进行运算 四 用函数对列中的每个值进行处理 五 选择自己需要的列 六 修改列名 七 删除列 首先导入pandas库 创建一个数据框对象 import pandas as pd data p
  • Java 华为真题-选修课

    需求 现有两门选修课 每门选修课都有一部分学生选修 每个学生都有选修课的成绩 需要你找出同时选修了两门选修课的学生 先按照班级进行划分 班级编号小的先输出 每个班级按照两门选修课成绩和的降序排序 成绩相同时按照学生的学号升序排序 输入描述
  • fegin需要实现类_学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!

    一 类 的介绍 在C 中 用 类 来描述 对象 所谓的 对象 是指现实世界中的一切事物 那么类就可以看做是对相似事物的抽象 找到这些不同事物间的共同点 如自行车和摩托车 首先他们都属于 对象 并且具有一定得相同点 和一些不同点 相同点如他们