定义多个类对象,分别输入和输出各对象中的时间(时:分:秒)

        在前面的文章中,类中只有公用数据而无成员函数,而且只有1个对象。可以直接在主函数中进行输入和输出。若有多个对象,需要分别引用多个对象中的数据成员,可以写出如下程序:
(1)编写程序(a):

        程序是清晰易懂的,但是在主函数中对不同的对象一一写出有关操作,会使程序冗长,如果有10个对象,那么主函数会有多长呢?这样会降低程序的清晰性,使阅读困难。为了解决这个问题,可以使用函数来进行输入和输出,见程序(b)。

(2)编写程序(b):

运行结果:

程序分析:
        函数set_time和show_time是普通函数,而不是成员函数。函数set_time用来给数据成员赋值,函数show_time用来显示数据成员的值。函数的形参t是Time类对象的引用t,当主函数调用函数
        set_time(t1);
时,由于set_time函数中的形参t是Time类对象的引用,因此它与实参1共占同一段内存单元(所以说t是t1的别名)。调用set_time(t1)相当于执行以下语句:
        cin>>t1.hour;
        cin>>t1.minute;
        cin>>t1.sec;
向t1中的hour,minute和sec输入数值。
        调用show_time(t1)时,输出对象t1中的数据。用t2作实参时情况类似。
注意:

        在程序中对类对象t1和t2的定义是分别用两个语句完成的,并未写在一行上。C语言要求所有的声明必须集中写在本模块的开头,因此熟悉C语言的程序编写人员往往养成一个习惯,把所有声明集中写在本模块的开头。但是在 C++编程中并不提倡这样做。在 C++中,声明是作为语句处理的,可以出现在程序中的任何行。因此,C++的编程人员习惯不把声明都写在开头,而是用到时才进行声明(如同本程序那样),这样程序比较清晰,阅读方便。

(3)编写程序(c):

        可以对上面的程序作些修改,数据成员的值不再由键盘输入,而在调用函数时由实参给出,并在函数中使用默认参数。

运行结果:

程序分析:
        在执行
        set_time(t1,12,23,34);
时,将12,23,34分别传递给形参hour,minute和sec,然后再赋予t.hour,t.minute,t.sec,由于t是t1的引用,因此相当于赋给t1.hour, t1.minute,t1.sec,即对象t1中的数据成员hour,minute和sec。因此在执行show_time(t1)时输出"12:23:34"。
        在执行下面语句
        set_time(t2);
时,由于只给出第1个参数t2,后面的3个参数未给定,因此形参采用定义函数时指定的默认值。
说明:

        在main函数中对set_time函数作原型声明时指定了默认参数,在定义set_time函数时不必重复指定默认参数。如果在定义函数时也指定默认参数,其值应与函数声明时一致,如果不一致,编译系统以函数声明时指定的默认参数值为准,在定义函数时指定的默认参数值不起作用。例如将定义 set_time函数的首行改为
        void set_time(Time&t, int hour=9, int minute=30,int sec=0)
        在编译时上行指定的默认参数值不起作用,运行结果仍为
        12:23:34
        0:0:0
        以上两个程序中定义的类都只有数据成员,没有成员函数,这显然没有体现出使用类的优越性。之所以举这两个例子,主要想从最简单的情况开始逐步熟悉有关类的使用。在之后的文章中,类体中就包含成员函数。

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

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

相关文章

Apache Arrow 和数据的未来:开放标准推动人工智能发展

Apache Arrow 是一种开源列式内存格式,适用于平面数据和分层数据。在现代数据湖中,开放数据格式(如 Apache Arrow)位于现代对象存储的存储层中。这些格式成为对象存储中的对象。 在最新版本中,Apache Arrow 宣布计划从…

STM32F4 STD标准库串口接收中断+空闲中断例程

STM32F4 STD标准库串口接收中断空闲中断例程 🔖工程基于STM32F446 ✨用惯了STM32CubeMX傻瓜式配置,突然改用标准库写代码,初始化外设内容,总是丢三落四的。 📗串口初始化配置 void uart_init(uint32_t bound) {//GPIO…

使用Naive UI的级联选择器 Cascader进行省市区选择

序言: 在进行PC版的功能开发时,进行客户管理时老板要让客户便捷的选择自己的省市区等信息,而不是让他们一个个去填写,这时就需要使用级联选择器来进行省市区的选择。 注:element ui/plus的级联选择器也是可以的。 步骤…

2024年全国青少信息素养大赛python编程复赛集训第九天编程题分享

整理资料解析答案非常不容易,感谢各位大佬给个点赞和分享吧,谢谢 今天题目较简单:适合小学组 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准…

【AWS SMB】关于AWS 中小型企业 (SMB) 能力介绍及注意事项

文章目录 前言一、什么是 SMB?📢二、如何识别中小企业的需求三、中小企业营销活动的类型四、AWS 合作伙伴可获得的其他 AWS 机会4.1 AWS IQ4.2 APN 客户参与 (ACE) 计划 前言 AWS 中小型企业 (SMB) 能力合作伙伴专注于帮助中小型…

监控 Prometheus源码安装实战和动态更新 Centos7

安装go环境 下载go安装包 #创建文件夹 mkdir /usr/local/software #进入文件夹 cd /usr/local/software #下载安装包 wget https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz配置go环境变量 #解压 tar -zxvf go1.17.6.linux-amd64.tar.gz#配置环境变量 echo "exp…

C++拷贝构造函数、运算符重载函数、赋值运算符重载函数、前置++和后置++重载等的介绍

文章目录 前言一、拷贝构造函数1. 概念2. 特征3. 编译器生成默认拷贝构造函数4. 拷贝构造函数典型使用场景 二、运算符重载函数三、赋值运算符重载函数1. 赋值运算符重载格式2. 赋值运算符只能重载成类的成员函数不能重载成全局函数3.编译器生成一个默认赋值运算符重载4. 运算符…

Android记录9--实现转盘效果

自定义View /2013.10.16_TurnPlate_Demo/src/com/wwj/turnplate/TurnPlateView.java package com.wwj.turnplate; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; im…

深入了解RTMP推流技术:视频汇聚EasyCVR低延迟与高稳定性分析

RTMP(Real Time Messaging Protocol)视频推流技术,作为音视频传输领域的关键技术之一,已经在直播、视频会议、在线教育等多个场景中得到了广泛应用。RTMP以其独特的优势,为实时音视频传输提供了高效、稳定的解决方案。…

ffmpeg音视频开发从入门到精通——ffmpeg实现音频抽取

文章目录 FFmpeg 实现音频流抽取1. 包含FFmpeg头文件与命名空间声明2. 主函数与参数处理3. 打开输入文件4. 获取文件信息5. 查找音频流6. 分配输出文件上下文7. 猜测输出文件格式8. 创建新的音频流9. 打开输出文件10. 写入文件头信息11. 读取并写入音频数据12. 写入文件尾部信息…

重磅!2024年最新影响因子(生态学/林学/土壤学/遥感/微生物/环境科学/植物科学) 收藏版!

2024年最新影响因子正式揭晓!2024年6月20日,Clarivate Analytics(科睿唯安)发布了各大SCI期刊的2023年影响因子。从最新结果看,今年的影响因子继续“普跌”,其中顶刊Nature和Science均有下降,分…

ubuntu永久换镜像源详细方法

1.查看ubuntu的版本,不同的版本对应的不同的镜像源(下面会讲到,先按步骤操作即可) cat /etc/issue 2.先备份一个,防止更改错误 cp /etc/apt/sources.list /etc/apt/sources.list.backup 3.备份好之后删除原有的sour…

Android图片圆角转换 RoundedImageView开源项目 小记(1)

android:background“#7f000000” android:paddingLeft“8dp” android:paddingRight“8dp” android:textAppearance“?android:attr/textAppearanceMediumInverse” /> <TextView android:id“id/textView1” android:layout_width“wrap_content” android:la…

【Gradio】从 BigQuery 数据创建实时仪表板

Google BigQuery 是一个基于云的服务&#xff0c;用于处理非常大的数据集。它是一个无服务器且高度可扩展的数据仓库解决方案&#xff0c;使用户能够使用类 SQL 查询分析数据。 在本教程中&#xff0c;我们将向您展示如何在 Python 中查询 BigQuery 数据集&#xff0c;并使用 g…

SpringBoot 快速入门(保姆级详细教程)

目录 一、Springboot简介 二、SpringBoot 优点&#xff1a; 三、快速入门 1、新建工程 方式2&#xff1a;使用Spring Initializr创建项目 写在前面&#xff1a; SpringBoot 是 Spring家族中的一个全新框架&#xff0c;用来简化spring程序的创建和开发过程。SpringBoot化繁…

Bootloader -- U-Boot 介绍

Bootloader -- U-Boot 介绍 1 介绍1.1 概述1.2 知名 BootloaderLILO (Linux Loader)GRUB (GNU GRand Unified Bootloader)LoadlinROLO (Rockbox Loader)EtherbootLinuxBIOS (现在叫 coreboot)BLOBU-BootRedBoot 1.3 BootLoader 和 Monitor 区别1.4 U-Boot 的源码结构1.5 U-Boot…

idea导入文件里面的子模块maven未识别处理解决办法

1、File → Project Structure → 点击“Modules” → 点击“” → “Import Model” 2、可以看到很多子模块&#xff0c;选择子模块下的 pom.xml 文件导入一个一个点累死了&#xff0c;父目录下也没有pom文件 解决办法&#xff1a;找到子模块中有一个pom.xml文件&#xff0c;…

colima配置docker镜像源

只在 colima ssh 环境下修改 docker 配置文件是无效的&#xff0c;我们需要修改 colima 配置文件才能使 docker 镜像源生效。 此时你需要进入到~/.colima/default目录下编辑colima.yaml文件。该文件是 colima 的配置文件。内容如下图所示&#xff0c;我这里配置了许多家的镜像源…

rockchip linux sdk指定编译配置文件

SDK&#xff1a;rk3568_linux4.19_V1.4.0 硬件平台&#xff1a;RK3566 一、指定板级配置文件 板级配置文件在<SDK>/device/rockchip/rk3566_rk3568目录下。 1、方法1 ./build.sh后⾯加上板级配置⽂件&#xff0c;例如&#xff1a; ./build.sh /device/rockchip/rk3…

vmware虚拟机安装ubuntu20.04

1.下载Ubuntu 20.04的ISO镜像 Index of /ubuntu-releases/ 2.安装VMware 3.创建新的虚拟机&#xff1a;打开VMware&#xff0c;选择“创建新的虚拟机”或通过文件菜单新建虚拟机。 4.选择典型&#xff0c;然点点击下一步&#xff1a; 5.选择稍后安装操作系统&#xff1a; 6.…