按要求补充编程片段 只要符合标准 秒采纳

img

img

img


类与对象题不要用太高级句子(最好多些注释) 必须按照他的提示填写 最好附上运行结果 只要测试后没问题 秒通过!

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

class MyDate{
public:
    MyDate(int y, int m, int d){
        year  = y;
        month = m;
        day   = d;
    }
    MyDate(const MyDate& b){
        year  = b.year;
        month = b.month;
        day   = b.day;
    }
    void set(int y, int m, int d){
        year  = y;
        month = m;
        day   = d;
    }
    void show(){
        printf("%d,%d,%d\n", year, month, day);
    }

private:
    int year;
    int month;
    int day;
};

class Person{
public:
    char *name;
    MyDate *birthday;
    Person(char* na, MyDate bir);
    Person(const Person& p);
    ~Person();
    void show(){
        printf("%s ",name);
        birthday->show();
    }
};
Person::Person(char* na, MyDate bir){
    name = new char[10];
    strcpy(name, na);
    birthday = new MyDate(bir);
    printf("构造:%s ",name);
    birthday->show();
}
Person::Person(const Person& p){
    name = new char[10];
    strcpy(name, p.name);
    birthday = new MyDate(*p.birthday);
    printf("构造:%s ",name);
    birthday->show();
}
Person::~Person(){
    printf("析构:%s ",name);
    birthday->show();
    delete name;
    delete birthday;
}

int main(){
    char name[10];
    int y,m,d;
    scanf("%s",name);
    scanf("%d,%d,%d",&y,&m,&d);
    MyDate t(y,m,d);
    Person p1(name,t);
    Person p2(p1);
    p2.birthday->set(1987,2,27);
    p1.show();
    p2.show();
    p2.birthday = new MyDate(2020,1,2);
    p1.show();
    p2.show();
    return 0;
}