C++学习day3

目录

作业:

[1> 思维导图](#1> 思维导图)

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

效果图:


作业:

1> 思维导图

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

cpp 复制代码
#include <iostream>

using namespace std;
//设计一个per类和stu类
class Per
{
private://私有的
    string name;//姓名
    int age;//年龄
    double *hight;//身高
    double *weight;//体重
public:
    //构造函数
    Per(string n,int a,double h,double w):name(n),age(a),hight(new double(h)),weight(new double(w))
    {
        cout << "Per::有参构造函数" << endl;

    }
    string GetName()const
    {
            return name;
        }

        int GetAge() const
        {
            return age;
        }

        double GetHight() const
        {
            return *hight;
        }

        double GetWeight() const
        {
            return *weight;
        }

    void show()
    {
        cout << "姓名:" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "身高:" << *hight << endl;
        cout << "体重:" << *weight << endl;
    }
    //析构函数
    ~Per()
    {
        cout << "Per::析构函数" << endl;
        delete hight;
        delete weight;

    }


};
class Stu
{
private:
    int score;//成绩
     Per p1;//学生信息
public:
     //构造函数
     Stu(int s,string n,int a,double h,double w): score(s), p1(n,a,h,w)
     {
         cout << "Stu:: 有参构造函数" << endl;
     }
    void show()
    {
        cout << "成绩:"<< score << endl;
        p1.show();
    }
    //拷贝构造函数
    Stu(const Stu &other):score(other.score),p1(other.p1)
    {
        cout << "Stu::拷贝构造函数" <<endl;

    }
    Stu& operator=(const Stu& other)
    {
        if (this == &other)
            return *this;

        score = other.score;
        p1 = Per(other.p1.GetName(), other.p1.GetAge(), other.p1.GetHight(), other.p1.GetWeight());

        return *this;
    }


    //析构函数
    ~Stu()
    {
        cout << "Stu:: 析构函数" << endl;

    }

};

int main()
{
    Stu S1(100,"zhangsan",23,180.7,100.98);//有参构造函数
    S1.show();
    Stu S2(S1);//拷贝构造函数


    return 0;
}

效果图:

相关推荐
Aurorar0rua4 小时前
CS50 x 2024 Notes C -14
c语言·开发语言·学习方法
小短腿的代码世界5 小时前
从.qrc到rcc编译器:Qt资源系统的隐秘运作机制与大型项目性能突围
开发语言·qt
MY_TEUCK5 小时前
【2026最新Python+AI学习基础】Python 入门笔记篇
笔记·python·学习
qq_571099355 小时前
学习周报四十五
学习
2401_833269306 小时前
Java网络编程入门
java·开发语言
青瓦梦滋6 小时前
C++的IO流与STL的空间配置器
开发语言·c++
五月君_6 小时前
Bun v1.3.14 发布,Rust 版即将进 Claude Code 内测,下一版可能就告别 Zig
开发语言·后端·rust
鱼很腾apoc7 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
不吃土豆的马铃薯8 小时前
4.SGI STL 二级空间配置器 allocate 与_S_refill 源码解析
c语言·开发语言·c++·dreamweaver·内存池
码界筑梦坊9 小时前
120-基于Python的食品营养特征数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·fastapi