C++day3(设计一个Per类,类中包含私有成员:姓名、年龄...)

news2024/10/3 10:45:28

1.设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象 p1,设计这两个类的构造函数、析构函数和拷贝构造函数。 

#include <iostream>

using namespace std;

class Per
{
private:
    string name;
    int age;
    float *height;      //指针成员
    float *weight;
public:
    //Per提供的无参构造函数
    Per()
    {

    }
    //Per提供的有参构造函数
    Per(string name, int age, float height, float weight):name(name),age(age),height(new float(height)),weight(new float(weight))
    {

    }
    //析构函数
    ~Per()
    {
        delete height;
        height = nullptr;
        delete weight;
        weight = nullptr;
    }
    //深拷贝构造函数
    Per(Per &other)
    {
        this->name = other.name;
        this->age = other.age;
        this->height = new float(*(other.height));
        this->weight = new float(*(other.weight));
    }
    void set_p(float height,float weight)
    {
        *(this->height) = height;
        *(this->weight) = weight;
    }
     void fun();
};

class Stu {
private:
    float score;
    Per p1;

public:
    //Stu提供的无参构造函数
    Stu()
    {

    }
    //Stu提供的有参构造函数
    Stu(float score,Per &p1):score(score),p1(p1)
    {

    }
    //析构函数
    ~Stu()
    {
    }
    void set_p(float height,float weight)
    {
        p1.set_p(height,weight);
    }
    //深拷贝构造函数
    Stu(Stu &other)
    {
        this->score = other.score;
        this->p1 = other.p1;
    }
    void fun();
};

void Per::fun()
{
    cout << "姓名: " << name << endl;
    cout << "年龄: " << age << endl;
    cout << "身高: " << *height << endl;
    cout << "体重: " << *weight << endl;
}

void Stu::fun()
{
    p1.fun();
    cout << "成绩: " << score << endl;
}

int main()
{
    Per p1("xjx", 22, 158.5, 50.2);
    p1.fun();

    Stu s1(100,p1);
    s1.fun();

    Stu s2 = s1;
    s1.fun();

    s1.set_p(180,120);
    s1.fun();
    s2.fun();
    return 0;
}


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

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

相关文章

【图论】拓扑排序

一.定义 拓扑排序是一种对有向无环图&#xff08;DAG&#xff09;进行排序的算法&#xff0c;使得图中的每个顶点在排序中都位于其依赖的顶点之后。它通常用于表示一些任务之间的依赖关系&#xff0c;例如在一个项目中&#xff0c;某些任务必须在其他任务之前完成。 拓扑排序的…

解决:错误: 找不到或无法加载主类 XXX

解决&#xff1a;错误: 找不到或无法加载主类 XXX 一问题描述&#xff1a;1.在MacBook电脑上面&#xff0c;想用java原生命令执行一个class文件2.进入到class文件目录下面&#xff0c;使用“java 类名”命令&#xff0c;总是报错如下图所示。因为在windows环境的cmd环境这样都可…

游戏出海需知:Admob游戏广告变现策略

越来越多的出海游戏公司更加重视应用内的广告变现&#xff0c;而 AdMob因为其提供的丰富的广告资源&#xff0c;稳定平台支持&#xff0c;被广泛接入采用。 Admob推出的广告变现策略包括bidding、插页式激励视频、开屏广告、各种细分功能的报告等等。 一、Bidding 竞价策略 …

文件夹的批量下载

1.业务背景 公司想实现文件系统下载&#xff0c;上次图简单就草率的写了文件下载&#xff0c;这不趁着同事请假赶集吧这坑给填上。 2.遇到问题 刚准备开始写&#xff0c;就头疼&#xff0c;文件只要获得数据输出流就行&#xff0c;但是这文件夹需要维护层级关系。 前端…

Postman高级用法——newman安装运行

newman是为postman而生专门的执行软件&#xff0c;newman执行脚本即非GUI方式执行&#xff08;命令行方式&#xff09; 下面为newman安装运行的详细操作&#xff01;&#xff01;&#xff01;&#xff08;认真看噢&#xff09; &#xff08;1&#xff09;安装node.js&#xf…

多个promise并发执行,如果某个promise失败,则尝试重新执行该promise一次,如果还是失败则提示错误

思路 可以使用 Promise.all()和Promise.catch() 结合的方式来实现多个promise的并发执行&#xff0c;并在某个promise失败时尝试重新执行。 首先&#xff0c;将所有的promise放入数组中&#xff0c;并使用Promise.all()来同时执行这些promise&#xff0c;这样可以确保所有的p…

利用 XGBoost 进行时间序列预测

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建3D应用场景 XGBoost 应用程序的常见情况是分类预测&#xff08;如欺诈检测&#xff09;或回归预测&#xff08;如房价预测&#xff09;。但是&#xff0c;也可以扩展 XGBoost 算法以预测时间序列数据。它是如何工作的&#xf…

【业务功能篇73】web系统架构演变-单体-集群-垂直化-服务化-微服务化

1.服务架构的演 1.1 单体架构 单体架构应该是我们最先接触到的架构实现了&#xff0c;在单体架构中使用经典的三层模型&#xff0c;即表现层&#xff0c;业务逻辑层和数据访问层。 单体架构只适合在应用初期&#xff0c;且访问量比较下的情况下使用&#xff0c;优点是性价比很…

Redis五种类型

Redis 基础类型 String 应用场景 缓存功能&#xff1a;string 最常用的就是缓存功能&#xff0c;会将一些更新不频繁但是查询频繁的数据缓存起来&#xff0c;以此来减轻 DB 的压力。 底层实现 如果字符串对象保存的是一个字符串值&#xff0c; 并且这个字符串值的长度大于…

【2023中国算力大会】高质量建设西部数谷,努力把宁夏打造成算力之都

2023年8月18日—19日&#xff0c;2023中国算力大会在宁夏银川举行&#xff0c;本届大会以“算领新产业潮流 力赋高质量发展”为主题&#xff0c;打造“主题论坛、成果展示、产业推介、先锋引领”四大核心内容&#xff0c;全面展示算力产业发展最新成果&#xff0c;为产业各方搭…

servlet介绍,tomcat容器下载启动

1.1servlet是什么&#xff1f; servlet是一种java程序类&#xff0c;这些类继承了httpservlet类。这些类没有main方法&#xff0c;有两大对象request请求&#xff0c; response响应对象。这些类需要servlet容器才可以运行。 servlet 2.5 servlet 3.0 WEB-INF/web.xml <…

Docker安装并配置Pushgateway

Linux下安装Docker请参考&#xff1a;Linux安装Docker 简介 Pushgateway是Prometheus的一个组件&#xff0c;prometheus server默认是通过Exporter主动获取数据&#xff08;默认采取pull拉取数据&#xff09;&#xff0c;Pushgateway则是通过exporter主动方式推送数据到Pushg…

BlazorServer中C#与JavaScript的相互调用

BlazorServer中C#与JavaScript的相互调用 前言&#xff1a; ​ 虽然BlazorServer中推荐使用C#在razor页面中的替代JavaScript来完成逻辑的编写&#xff0c;但当需要使用第三方的javascript文件/组件里的内容时&#xff0c;则难免要在C#中调用其方法或对象。反之当你的(用到第…

性能调优篇 二、Jvm监控及诊断工具-命令行篇

目录 一、概述1、简单命令行工具 二、jps&#xff1a;查看正在运行的Java程序&#xff08;掌握&#xff09;1、是什么&#xff1f;2、测试3、基本语法 三、jstat&#xff1a;查看jvm统计信息&#xff08;掌握&#xff09;1、是什么&#xff1f;2、基本语法3、补充 四、jinfo&am…

avue-ueditor中隐藏部分工具栏

项目中不需要那么多工具栏,只需要展示部分工具栏 <avue-ueditor v-model"content" v-bind"options" :customConfig"customConfig" :placeholder"placeholder"></avue-ueditor>//按需隐藏或者显示工具栏即可 props: {custo…

数据结构(6)

2-3查找树 2-结点&#xff1a;含有一个键(及其对应的值)和两条链&#xff0c;左链接指向2-3树中的键都小于该结点&#xff0c;右链接指向的2-3树中的键都大于该结点。 3-结点&#xff1a;含有两个键(及其对应的值)和三条链&#xff0c;左链接指向的2-3树中的键都小于该结点&a…

WPF中的数据转换-StringFormat

WPF中的数据转换-StringFormat 前言 字符串格式化。使用该功能可以通过设置Binding.StringFormat属性对文本形式的数据进行转换——例如包含日期和数字的字符串。对于至少一半的格式化任务&#xff0c;字符串格式化是一种便捷的技术。 使用 当设置Binding.StringFormat属性…

因为计算机丢失vcruntime140.dll如何修复,教你如何快速修复

前几天&#xff0c;我在使用电脑时遇到了一个棘手的问题——我的电脑上的一个程序(软件名称)突然无法运行&#xff0c;提示我缺少vcruntime140.dll文件。这让我感到非常烦恼&#xff0c;因为我并不清楚如何解决这个问题。在经过一番尝试和搜索后&#xff0c;我终于找到了解决方…

Java进阶(7)——手动实现LinkedList 内部node类的实现 增删改查的实现 toString方法 源码的初步理解

目录 引出从ArrayList到Linkedlist手动实现ArrayList从ArrayList到LinkedList 总体设计Node类Node的方法&#xff1a;根据index找node 增删改查的实现增加元素删除元素修改元素查询元素 toString方法完整代码List接口类LinkedList的实现测试类 总结 引出 1.linkedList的节点&am…