C++_day4

思维导图

代码

cpp 复制代码
#include <iostream>

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

class Per
{
private:
    string name;
    int age;
    double *heigh,*weigh;
public:
//    Per()
//    {
//        cout << "Per::无参构造函数" << endl;
//    }
    Per(string name="--",int age=0,double heigh=0.0,double weigh=0.0):name(name),age(age),heigh(new double(heigh)),weigh(new double(weigh))   //构造函数
    {
        cout << "Per::有参构造函数" << endl;
    }
    Per(const Per &other):name(other.name),age(other.age),heigh(new double(*(other.heigh))),weigh(new double(*(other.weigh)))
    {
        cout << "Per::拷贝构造函数" << endl;
    }
    Per &operator=(const Per &other)
    {
        if(this != &other)
        {
            name=other.name;
            age=other.age;
            heigh=other.heigh;
            weigh=other.weigh;
        }
        cout << "Per::拷贝赋值函数" << endl;
        return *this;
    }
    ~Per()
    {
        delete heigh;
        delete weigh;
        cout << "Per::析构函数" << endl;
    }
    void show()
    {
        cout << name << " " << age << " " << *heigh << " " << * weigh << " " ;
    }
};


class Stu
{
private:
    Per p1;
    double score;
public:

    Stu()
    {
      cout << "Stu::无参构造函数" << endl;
    }
    Stu(string name,int age,double heigh,double weigh,double score):p1(name,age,weigh,heigh),score(score)
    {
         cout << "Stu::有参构造函数" << endl;
    }
    Stu(const Stu &other):p1(other.p1),score(other.score)
    {
        cout << "Stu::拷贝构造函数" << endl;
    }
    Stu &operator=(const Stu &other)
    {
        if(this!=&other)
        {
            p1=other.p1;
            score=other.score;
        }
        cout << "Stu::拷贝赋值函数" << endl;
         return *this;
    }
    ~Stu()
    {
        cout << "Stu::析构函数" << endl;
    }
    void show()
    {
        p1.show();
        cout<< score <<endl;
    }
};

int main()
{
   Per p1;
   p1.show();
   cout << endl;
   Per p3("李四",19,199,67);
   p3.show();
   cout << endl << "========================" << endl;
   Stu s3;
   Stu s1("张三",18,189,56,99);
   s1.show();
   cout << "========================" << endl;
   Per p2(p1);
   p2.show();
   cout << endl << "========================" << endl;
   Stu s2(s1);
   s2.show();
   cout << "========================" << endl;
   p1=p3;
   p1.show();
   cout << endl << "========================" << endl;
   s3=s1;
   s1.show();
   cout << "========================" << endl;



    return 0;
}
相关推荐
码匠许师傅6 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小小龙学IT7 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研9 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
C++ 老炮儿的技术栈10 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qz_Serene12 小时前
C++:类和对象(上)
开发语言·c++
郝学胜-神的一滴14 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
hetao173383714 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
间歇性努力持续性发呆的野生快乐选手16 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
旖旎夜光17 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
hansang_IR17 小时前
【题解】P14468 [COCI 2025/2026 #1] 和谐 / Harmonija(线段树 DDP 版本)
c++·算法·动态dp