西南科技大学C++程序设计实验四(类与对象三)

一、实验目的

1. 理解类的组合定义、说明与使用

2. 参数化列表的使用

3. 组合类的特例——string类

二、实验任务

重点:掌握组合类的定义与实现,丰富类的数据成员与成员函数,拓展其功能。

  1. 阅读分析、完善程序。下面是一个组合类 Teacher的定义,数据成员包括代表姓名的字符串类对象name,代表学号的常字符串指针,代表生日的Date类对象;成员函数包括无参、有参、复制构造函数,以及信息输出函数,现要求:

(1)思考并实验验证程序,回答程序处标注的思考题?

(2)查阅资料回答:组合类对象不用参数化列表方式初始化是否可以?常数据成员,常成员函数的特点?

在C++中,组合类对象可以使用默认构造函数进行初始化,不一定需要参数化列表方式。常数据成员是指在类中声明为const的成员变量,它们的值不能在对象生命周期内被修改。常成员函数是指在类中声明为const的成员函数,它们保证不会修改对象的状态,只能访问对象的常数据成员和非常成员函数。常数据成员和常成员函数可以提高程序的可读性和安全性,尤其是在多线程或并发编程中。

(3)查阅资料回答:静态变量、静态成员函数的特点?

静态变量和静态成员函数的特点包括:

1.与类相关而不是与对象相关。

2.可以通过类名直接访问。

3.不需要类的实例即可使用。

4.静态变量在程序生命周期内只创建一次,本质上是全局变量,因此需要小心使用以避免命名冲突。

5.静态成员函数不能访问非静态成员,也不能使用this指针,因为它们没有隐式的对象参数。

(4)查阅资料回答:string类的使用特点?

string类的使用特点包括:

1.动态内存管理:string类自动处理字符串的内存分配和释放,避免了手动管理内存带来的问题。

2.支持各种操作:string类支持大量的字符串操作,包括连接、比较、查找、替换等,方便了程序员的开发工作。

3.可读性强:string类代码具有可读性强的特点,能够很好地表达程序员的意图,降低代码出错的概率。

4.高效性:尽管string类是动态内存管理,但通过优秀的实现和算法,它可以非常高效地执行大多数操作。

5.与C风格字符串兼容:string类可以轻松地与C风格字符串进行转换和互操作,这使得在C++程序中使用已有的C代码更加容易。

#include <iostream>
#include <string>
using namespace std;
class Date
{private:
    int y, m, d;
    const int a;
    static int c;
public:
    Date():a(0) //常变量使用初始化列表方式初始化
    {
        y = m = d = 0;
    }
    Date(int yy, int mm, int dd) : y(yy),a(0)//普通常变量也可以使用初始化列表方式初始化
    {
        m = mm; d = dd;
    }
    Date(Date &dt) :y(dt.y), a(dt.a)
    {
        m = dt.m; d = dt.d;
    }
    void output()
    {
        y = d;
        cout << y << ":" << m << ":" << d << endl;
        cout << "a="<<a << endl;
    }
    void output()const
    {

    y = d;  //思考1常成员函数是否可以改变变量的值

        cout << "a=" << a << endl;
        cout << y << ":" << m << ":" << d << endl;
    }
};
int Date::c = 0; //静态数据成员初始化
class Teacher  //组合类
{
private:
    string name;
    const char* str;
    Date bir;
public:
    Teacher(string n,const char* s,Date b):bir(b//思考2第二个形参是否可以去掉const 
    {
        name=n;
        str =s;
    }
    Teacher() //思考3无参构造函数中内嵌对象bir如何实现初始化 
    {
        name = " ";
        str = " ";
    }
    Teacher(Teacher &t) :bir(t.bir)
    {
        name =t.name;
        str =t.str;
    }
    string getname()
    {
        return name;
    }
    const char* getstr() //思考4:此函数是常成员函数吗 
 
    {
        return str;
    }
    

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

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

相关文章

驱动开发--内核添加新功能

Ubuntu下这个文件为开发板ls命令的结果 内核的内容&#xff1a; mm&#xff1a;内存管理 fs&#xff1a;文件系统 net&#xff1a;网络协议栈 drivers&#xff1a;驱动设备 arch与init&#xff1a;跟启动相关 kernel与ipc&#xff1a;任务&#xff0c;进程相关 向内核增…

python-批量调整指定目录下所有图片文件的大小

前言&#xff1a; 在很多情况下我们都需要调整图片的大小到所需要的尺寸&#xff0c;比如在深度学习中批量调整图片大小可以使得数据预处理更加高效&#xff0c;如果图片过大&#xff0c;训练的时候会比较慢&#xff0c;而且占用内存空间&#xff0c;图片尺寸不一样的情况下&am…

关于mysql字段类型为text还提示类型太短问题

MySQL中的Text字段最大长度 Text字段是MySQL中一种用来存储大量文本数据的数据类型。它能够存储比较大的数据&#xff0c;所以在保存文章详情内容或商品详情内容都会用到&#xff0c;到底有多长呢&#xff1f; Text字段的限制 虽然Text字段能够存储大量的文本数据&#xff0…

Depop自养号下单教程,测评环境、IP与买家资料的关键

Depop是一家总部位于英国伦敦的在线时尚市场和社交媒体平台。该平台于2011年由Simon Beckerman创立&#xff0c;旨在提供一个结合了时尚、创意和社交互动元素的独特购物体验。Depop已经发展成为一个备受欢迎的时尚社交应用&#xff0c;吸引了全球范围内的卖家和购物者。提供了一…

一文读懂3D开发工具HOOPS SDK

前言 Tech Soft 3D是全球领先的3D领域开发工具提供商&#xff0c;可帮助软件团队交付成功的应用程序。Tech Soft 3D成立于1996年&#xff0c;该公司的工具包产品为全球数亿台计算机上运行的近500个独特应用程序提供支持&#xff0c;已经助力SolidWorks、AutoDesk、GrabCAD、CD…

kafka 3.x 学习笔记

kafka 3.x 学习笔记 在 kafka 2.8.0 版本之前&#xff0c;安装使用 kafka 需要配套安装 zookeeper&#xff0c;但在 2.8.0 版本之后&#xff0c;不再需要安装 zookeeper&#xff0c;本次学习笔记采用的 kafka 版本为 3.0.0。 文章目录 kafka 3.x 学习笔记一、kafka 定义1 什么是…

任务管理器快捷键分享!这些知识很有用!

“我刚学习使用电脑没多久&#xff0c;想问问大家任务管理器这个功能有什么用处呀&#xff1f;在使用任务管理器时有什么快捷键能快速进入吗&#xff1f;感谢解答&#xff01;” 在日常使用电脑的过程中&#xff0c;我们经常需要打开任务管理器来进行一些操作。而掌握任务管理器…

大数据SpringBoot项目|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现

大数据SpringBoot项目|基于SpringBootMyBatis框架健身房管理系统的设计与实现 摘 要:本文基于Spring Boot和MyBatis框架&#xff0c;设计并实现了一款综合功能强大的健身房管理系统。该系统涵盖了会员卡查询、会员管理、员工管理、器材管理以及课程管理等核心功能&#xff0c;…

机器视觉中的图像增强与对比度调整技术

在机器视觉中&#xff0c;图像增强与对比度调整技术是常用的方法&#xff0c;旨在改善图像的质量和视觉效果&#xff0c;或将图像转换成更适合人眼观察或机器分析识别的形式。 图像增强技术可以针对给定图像的应用场合&#xff0c;有目的地强调图像的整体或局部特性&#xff0…

移动端APP自动化测试框架-UiAutomator2基础

很早以前&#xff0c;我用uiautomatorjava实践过Android APP自动化测试&#xff0c;不过今天要提的不是uiautomator&#xff0c;而是uiautomator2。听起来uiautomator2像是uiautomator的升级版&#xff0c;但是这两款框架仅仅是名字上比较相似&#xff0c;实际上没有任何关联。…

硬盘分区丢失?这样轻松恢复!

​“在我安装操作系统的过程中&#xff0c;我先把C盘&#xff08;100G&#xff09;进行了格式化&#xff0c;而我的D盘大小为297G&#xff0c;然而在Win PE中&#xff0c;所显示的仅是247G&#xff08;CD盘总容量&#xff09;&#xff0c;这247G是空无一物的。让我感到困惑的是…

02、pytest环境准备

工具准备 python官网下载&#xff1a;https://www.python.org/pycharm官网下载&#xff1a;https://www.jetbrains.com.cn/en-us/pycharm/pytest官方文档&#xff1a;https://docs.pytest.org/en/7.4.x/python-office官网文档&#xff1a;http://www.python-office.com/ 参考…

MLops学习

文章目录 一、实验跟踪&#xff08;Experiental Tracking&#xff09;1. MLflow&#xff08;1&#xff09;实验跟踪&#xff08;2&#xff09;超参数优化Hyperopt集成Hyperopt和MLflow &#xff08;3&#xff09;模型注册 2. Weight & Bias 二、模型部署1. Web服务部署2. D…

新一代机器人的态势感知将成为研究的热点和难点

机器人的态势感知是指机器人对其周围环境和自身状态的感知能力。它包括对环境的感知&#xff0c;如感知物体的位置、形状、运动等&#xff0c;以及对自身状态的感知&#xff0c;如感知自身的位置、姿态、速度等。机器人的态势感知对于实现机器人的自主决策和行为至关重要&#…

《消息队列MyMQ》——参考RabbitMQ实现

目录 一、什么是消息队列&#xff1f; 二、需求分析 1&#xff09;核心概念 2&#xff09;核心API 3&#xff09;交换机类型 4&#xff09;持久化 5&#xff09;网络通信 ​编辑 6&#xff09;消息应答 三、 模块划分 四、创建核心类 1.ExChange 2.MSGQueue 3.Bind…

NSSCTF 文件上传漏洞题目

目录 [SWPUCTF 2021 新生赛]easyupload1.0 [SWPUCTF 2021 新生赛]easyupload2.0 [SWPUCTF 2021 新生赛]easyupload3.0 [SWPUCTF 2021 新生赛]easyupload1.0 这是一个文件上传漏洞的题目 我们的思路是上传一句话木马&#xff0c;用工具进行连接 先编写一句话木马 将文件后缀…

【深度学习】Stable Diffusion中的Hires. fix是什么?Hires. fix原理

文章目录 **Hires. fix****Extra noise**Upscalers Hires. fix https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#hires-fix 提供了一个方便的选项&#xff0c;可以部分地以较低分辨率呈现图像&#xff0c;然后将其放大&#xff0c;最后在高分辨率下添…

【数电笔记】16-卡诺图绘制(逻辑函数的卡诺图化简)

目录 说明&#xff1a; 最小项卡诺图的组成 1. 相邻最小项 2. 卡诺图的组成 2.1 二变量卡诺图 2.2 三表变量卡诺图 2.3 四变量卡诺图 3. 卡诺图中的相邻项&#xff08;几何相邻&#xff09; 说明&#xff1a; 笔记配套视频来源&#xff1a;B站&#xff1b;本系列笔记并…

JVM 如何加载类的? ## JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。

文章目录 JVM 如何加载类的&#xff1f;JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化。加载验证准备解析初始化 JVM 如何加载类的&#xff1f; JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验…

文献速递:(第三部分)— (超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展)

文献速递&#xff1a;&#xff08;第三部分&#xff09;— &#xff08;超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展&#xff09; Title 题目 A review of synthetic and augmented training data for machine learning in ultrasonic non-destructive e…