找出一个整型数组中的元素的最大值

        这个问题在之前的文章中曾用其他方法解决,现在用类来处理,读者可以比较不同方法的特点。

编写程序:

运行结果:

程序分析:
        程序看起来比较长,其实并不复杂,它包括以下3部分:
        (1)声明一个类Array_max。
        (2)在类外定义成员函数。
        (3)主函数。
        实际上,在类外定义成员函数是属于类声明的一部分,只是把本来在类中定义的成员函数拿到类外来定义而已。因此上面3部分实际上是两部分,即
        (1)声明一个类Array_max。
        (2)主函数。
        在主函数中做的事是:(1)定义对象;(2)向各对象发出"消息",通知各对象完成有关任务,即调用有关对象的成员函数,去完成相应的操作。主函数很简单,语句很少,在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中常会使用控制结构。在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。只要把类定义好,编写程序的工作就显得很简单了。
说明:
        首先分析面向对象的程序和以前学过的面向过程的程序有什么不同。
        (1)面向对象程序中,一般都是把需要处理的数据封装在对象中的(数据可以是私有的或公用的,但一般应把数据设定为私有的,否则没有意义)。
        (2)在程序中必须要声明一个或多个类,即使是最简单的问题,也需要声明一个类。在类中包括数据和对数据操作的函数。至少要有一个公用的成员函数作为对外的接口。然后用该类来定义对象。
        (3)对数据的访问一般是通过对象进行的,即指定访问的是哪个对象中的数据。
        (4)程序的功能是由执行各个对象中的成员函数完成的。成员函数用来调用本对象的数据并进行运算处理。实际上,处理问题的算法是由各个成员函数实现的。
        可以概括为一句话:一切通过对象。
讨论:

        从前面的例子中,读者可以知道怎样建立类,怎样定义对象,怎样通过成员函数访问类中的私有数据。可能有的读者认为:这么简单的问题,若用C语言面向过程的方法编程,只需几行代码就行了,现在用类来处理反而这么复杂,是不是"杀鸡用牛刀"啊!
        的确,面向对象的方法不是用来处理简单问题的,对于数据少、操作简单的问题,完全可以用面向过程的方法,用C语言编程。但是,如果面对的是一个大型的、复杂的问题,例如学校中的数据处理,学校中有不同的人群(如教师、职工、学生),有不同的行政组织(如学院、系),学生有不同的层次(本科生、硕士生、博士生),也有不同的年级……如果想找出信息学院三年级学生中曾选修机械学院张教授和李教授课程的学生,这个不算复杂的问题,用面向过程的方法处理是很麻烦的,各种数据量大,容易混淆,程序设计者需要清晰地处理每一个步骤,先后调出所需的数据并对其进行不同的处理,难度很大。这时用面向对象的方法来处理就方便多了,思路也清晰了。把不同的数据和对其的操作封装在一个类中,并定义若干对象,需要用哪个就调用哪个,十分方便。
        本文介绍了使用类的最简单的例子,目的是为了使C++的初学者清晰地理解类的概念,初步学习使用类和对象,并不意味着提倡用面向对象的方法处理这样简单的问题。在学习阶段,对简单问题"小试牛刀",明白什么是"牛刀"以及如何使用,有了初步的基础之后,再逐步增加问题的复杂性,待深入掌握后,就可以学以致用了。

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

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

相关文章

生产实习Day13 ---- 神经网络模型介绍

文章目录 传统的神经网络模型注意力机制的引入注意力机制的本质Encoder-Decoder 框架注意力机制在 Encoder-Decoder 中的应用Self-Attention 机制Transformer 模型注意力机制的优势总结 传统的神经网络模型 在深度学习中,传统的神经网络模型,如循环神经…

【离散数学】图的随机生成和欧拉(回)路的确定(c语言实现)

实验要求 变量定义 因为如果我们使用局部变量,每一个函数都会使用这些变量,会让函数的参数越变越多。所以我们定义全局变量,这样就不用在参数中调用了。 #define MAX 100 int arrMap[MAX][MAX] { 0 };//图的矩阵 int degree[MAX] { 0 };…

[职场] 提升学历考研再就业有必要吗 #其他#知识分享

提升学历考研再就业有必要吗 有很多人觉得自己学历不够高,求职第一关可能就通过不了。因此想要继续攻读,最近有人问小编提升学历考研有必要吗?“硕士学历和三年的工作经验哪个更重要?” 这个还是要针对具体岗位而言。综合类型的岗位往往不需…

免费分享:2000-2020年中国长时间序列夜间灯光数据集(附下载方法)

夜间灯光数据集直观反映了地表夜间灯光亮度,进而揭示了人类活动强度,为分析城市扩张、人口迁移、经济发展等提供了连续、全面的视角,有助于深入理解中国城市化的历史进程和未来趋势。 数据简介 基于DMSP/OLS第四版非辐射定标夜间年平均灯光强…

【HW必备】用友NC-Cloud存在17处漏洞合集

漏洞简介 NC Cloud是用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。NC Cloud完全基于云原生架构,技术先进、性能稳定、自主安全可控,支撑大中型以及超大型集团企业N层多site混合云部署方案,支持整个系统高可…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编…

MySQL数据库(四):视图和索引

在数据库管理中,视图和索引是两种关键工具,它们各自发挥独特的作用以优化数据查询和管理。视图通过简化复杂查询、提高数据安全性和提供数据抽象,帮助用户轻松访问数据。而索引则通过加速查询、确保数据唯一性以及优化排序和分组操作&#xf…

哪个牌子充电宝好?好用充电宝排行榜!精选充电宝排行榜

在如今这个科技飞速发展的时代,充电宝已然成为我们日常生活中不可或缺的伴侣。无论是出差旅行,还是日常通勤,我们都离不开它为我们的电子设备保驾护航。然而,面对市场上琳琅满目的充电宝品牌,您是否感到眼花缭乱&#…

ONLYOFFICE 桌面编辑器 8.1 强势来袭:解锁全新PDF编辑、幻灯片优化与本地化体验,立即下载!

目录 一、轻松编辑PDF文件 1.1 编辑文本 1.2 添加、旋转和删除页面 1.3 插入和修改对象 1.4 添加注释和标注 1.5 切换编辑或查看模式 1.6 创建和填写表单 二、用幻灯片版式快速修改幻灯片 2.1 选择或创建幻灯片版式 2.2 应用幻灯片版式 2.3 修改幻灯片版式 2.4 使用…

[经验] candy是什么意思英语翻译 #笔记#其他#职场发展

candy是什么意思英语翻译 1、candy的意思 Candy是英语中的一个词汇,意思是糖果、糖果制品。Candy意为果脯的意思也不是很常见。 糖果是一种富含糖分的食品,主要由砂糖、粘合剂和食用色素等组成。糖果的种类可以很多,有硬糖、软糖、巧克力、…

基于YOLOv8m的水族馆动物识别(附数据集和Coovally操作步骤)

本文主要内容:详细介绍了水族馆动物识别的整个过程,从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 随着水族馆行业的快速发展,对动物识别的需求日益增加。水族馆需要准确识别动物种…

【ARM】PK51如何将BL51链接器切换成LX51链接器

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决客户在使用PK51进行项目研发的时候,想要使用LX51链接器进行使用。 2、 问题场景 客户在使用51芯片进行开发的时候,发现工程中使用的是BL51链接器,而不是LX51链接器&#xff…

selenium前期准备

1. 驱动地址: a. chromedriver:https://googlechromelabs.github.io/chrome-for-testing/ b. https://registry.npmmirror.com/binary.html?pathchromedriver/ 下载好的驱动一般放在Python初始文件夹下,例如:D:\Python3.8 2. selenium原理…

基于SSM+Jsp的校园餐厅管理

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

OpenAI CTO米拉·穆拉提谈未来:AI一年半后达到博士水平

人工智能(AI)领域近年来的发展迅猛,特别是在大语言模型(LLM)的进步上。最近,OpenAI的首席技术官(CTO)米拉穆拉提(Mira Murati)在达特茅斯学院的一次采访中&am…

Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息;

Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息; 智慧工地是指运用信息化手段,通过三维设计平台对工程项目进行精确设计和施工…

SpringBoot-注解@PropertiySource读取外部属性文件

ConfigurationProperties和Value两个注解能从配置文件中获取数据,但是前面讲了他们是从全局配置文件中获取,且只能从全局配置文件中获取,那么如果是一些数值类的数据放在全局配置文件里,是不怎么合适的,我们往往会把他…

WPF 深入理解六、ControlTemplate控件模板

ControlTemplate 定义 控件模板用于来定义控件的外观、样式,还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 对与WPF当中,每个控件都是无外观的,这意味着我们可以完全自定义其可视元素的外观,但是不能修改其内部的行为&#xf…

Vue3.3 的 defineOptions 的使用,方便在 setup 语法糖中为组件命名和控制父子属性透传,包含在线运行实例欧

defineOptions 是 Vue3.3 的新的宏&#xff0c;可以通过 defineOptions 宏在 <script setup> 中使用选项式 API&#xff0c;也就是说可以在一个宏函数中设置 name, props, emits, render, 控制是否允许父子非 props 的属性透传等功能。 defineOptions 可以直接在 setup …

读AI新生:破解人机共存密码笔记10人类角色

1. 工作 1.1. 技术性失业问题 1.1.1. 约翰梅纳德凯恩斯&#xff08;John Maynard Keynes&#xff09;在其著名的文章《我们后代在经济上的可能前景》中提出了技术性失业问题 1.1.1.1. 他在1930年写了这篇文章&#xff0c;当时大萧条在英国造成了大规模失业 1.1.2. 那些反对…