继承和派生

1、
1)定义日期的date类,其中包括数据成员年、月、日,要求包括构造函数;disp函数实现按“年/月/日”格式输出;重载“<”的运算符重载函数(日期较早者为小)。
2)建立date类的公有派生类Dtime,其中新增以下成员:时、分、秒;构造函数;
disp函数输出日期与时间;
在主函数中测试.
————————————————
版权声明:本文为CSDN博主「我又可以了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39319907/article/details/109552457

#include<iostream>
#include<string>
using namespace std;
class date
{
    protected:
    int year,month,day;
    public:
    date()
    {
        year=1990;
        month=1;
        day=1;
    }
    date(int year,int month,int day)
    {
        this->year=year;
        this->month=month;
        this->day=day;
    }
    ~date(){}
    void disp()
    {
        cout<<year<<"年/"<<month<<"月/"<<day<<"日";
    }
    bool operator<(date &d1)
    {
        if(year<d1.year)
        {
            return true;
        }else if(year==d1.year)
        {
            if(month<d1.month)
            {
                return true;
            }else if(month==d1.month)
            {
                if(day<d1.day)
                return true;
            }
        }
        return false;
    }
};
class Dtime:public date
{
    private:
    int hour,min,sec;
    public:
    Dtime(int year,int month,int day,int hour,int min,int sec)
    :date(year,month,day)
    {
        this->hour=hour;
        this->min=min;
        this->sec=sec;
    }
    ~Dtime(){}
    void dispT()
    {
        disp();
        cout<<hour<<":"<<min<<":"<<sec<<endl;
    }
};

int main()
{
    date d1(2020,3,4);
    date d2(2001,4,3);
    if(d1<d2)
    {
        d1.disp();
        cout<<"早于";
        d2.disp();
        cout<<endl;
    }else{
        d2.disp();
        cout<<"早于";
        d1.disp();
        cout<<endl;
    }
    Dtime t1(2010,2,3,12,0,0);
    t1.dispT();
    return 0;
}


2、设计一个日期类Tdate,这个类包括以下成员:
(1) int型的数据成员year、month、day分别表示年月日;
(2) 根据需要定义构造函数
(3) 定义成员函数void display()实现日期的显示功能
设计一个学生类Student,这个类包括以下成员:
(1) string型的数据成员name表示姓名
(2) Tdate型的数据成员birthday表示生日
(3) char型的数据成员sex表示性别
(4) 根据需要定义构造函数
(5) 定义成员函数void display()实现学生信息的显示功能
编写测试程序对类的功能进行测试。
————————————————
版权声明:本文为CSDN博主「我又可以了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39319907/article/details/109552457

#include<iostream>
#include<string>
using namespace std;
class Tdate
{
protected:
	int year;
	int month;
	int day;
public:
	Tdate(int year,int month,int day)
	{
		this->year=year;
		this->month=month;
		this->day=day;
	}
	~Tdate(){}
	void display()
	{
		cout<<year<<"-"<<month<<"-"<<day;
	}
};
class Student
{
private:
	string name;
	Tdate birthday;
	char sex;
public:
	Student(string name,int year,int month,int day,char sex):birthday(year,month,day)
	{
		this->name=name;
		this->sex=sex;
	}
	~Student(){}
	void dispaly_S()
	{
		cout<<"name:"<<name<<endl;
		cout<<"sex:"<<sex<<endl;
		cout<<"birthday:";
		birthday.display();
		cout<<endl;
	}
};
int main()
{
	Student s("Ming",1998,12,12,'W');
	s.dispaly_S();
	return 0;
}

3、动物园1.0
题目描述
某个动物园内,有老虎、狗、鸭子和猪等动物,动物园的管理员为每个动物都起了一个名字,并且每个动物都有年龄、体重等信息。每到喂食的时候,不同的动物都会叫唤(speak)。每种动物的叫唤声均不同,老虎的叫唤声是“AOOO”,狗的叫唤声是“WangWang”,鸭子的叫唤声是“GAGA”,猪的叫唤声是“HENGHENG”。

定义一个Animal的基类,Animal类有函数Speak(),并派生老虎、狗、鸭子和猪类,其能发出不同的叫唤声(用文本信息输出叫声)。

编写程序,输入动物名称、名字、年龄,让动物园内的各种动物叫唤。

要求:只使用一个基类指针,指向生成的对象并调用方法。

输入
测试案例的个数

第一种动物的名称 名字 年龄

第二种动物的名称 名字 年龄

输出
输出相应动物的信息

如果不存在该种动物,输出There is no 动物名称 in our Zoo. ,具体输出参考样例输出

样例输入
4
Tiger Jumpjump 10
Pig Piglet 4
Rabbit labi 3
Duck tanglaoya 8
样例输出
Hello,I am Jumpjump,AOOO.
Hello,I am Piglet,HENGHENG.
There is no Rabbit in our Zoo.
Hello,I am tanglaoya,GAGA.

#include <iostream>
#include <cstring>
#include <string>
using namespace std;
class Animal
{
protected:
    char name[16];
    int age;
public:
    Animal(char *n,int a):age(a){strcpy(name,n);}
    virtual void Speak()
    {
        cout <<"Hello,I am "<< name <<"(才怪)"<<endl;
    }
};
 
class Tiger :public Animal
{
public:
    Tiger(char *n,int a):Animal(n,a){}
    virtual void Speak()
    {
        cout <<"Hello,I am "<< name <<",AOOO."<<endl;
    }
};
class Dog :public Animal
{
public:
    Dog(char *n,int a):Animal(n,a){}
    virtual void Speak()
    {
        cout <<"Hello,I am "<< name <<",WangWang."<<endl;
    }
};
class Duck :public Animal
{
public:
    Duck(char *n,int a):Animal(n,a){}
    virtual void Speak()
    {
        cout <<"Hello,I am "<< name <<",GAGA."<<endl;
    }
};
class Pig :public Animal
{
public:
    Pig(char *n,int a):Animal(n,a){}
    virtual void Speak()
    {
        cout <<"Hello,I am "<< name <<",HENGHENG."<<endl;
    }
};
 
 
 
 
int main()
{
    int age,t;
    char name[16];
    string kind;
 
    Animal *p;
    cin >> t;
    while(t--)
    {
        cin >> kind >> name >> age;
        if(kind=="Tiger")
        {
            Tiger tiger(name,age);
            p=&tiger;
        }
        else if(kind=="Dog")
        {
            Dog dog(name,age);
            p=&dog;
        }
        else if(kind=="Duck")
        {
            Duck duck(name,age);
            p=&duck;
        }
        else if(kind=="Pig")
        {
            Pig pig(name,age);
            p=&pig;
        }
        else
        {
            cout <<"There is no "<< kind <<" in our Zoo."<<endl;
            continue;
        }
        p->Speak();
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值