2023.4.19编程一小时打卡

一、问题描述:

设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setValue(int m, string str)给age和name赋值;有一个void类型的纯虚函数display()。

设计一个学生类student,公有继承类people,有私有成员:studentID(学号,整型),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setID(int m)给studentID赋值;display()函数输出学生的姓名,年龄,学号。

设计一个教师类teacher,公有继承类people,有私有成员:teacherID(工号,整型),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setID(int m)给teacherID赋值; display()函数输出教师的姓名,年龄,工号。

在main函数定义学生对象和教师对象,利用父类指针给对象初始化赋值或调用setValue()和setID()赋值,并输出学生和老师的信息。

二、解题思路:

 首先定义一个父类people为抽象类,再定义俩个子类,最后用父类的指针去实现俩个子类的调用。

三、代码实现:

复制代码
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 class people
 5 {
 6 protected:
 7     int age;
 8     string name;
 9 public:
10     people(){}
11     people(int a,string n):age(a),name(n){}
12     ~people(){}
13     void setValue(int m,string str)
14     {
15         age=m;
16         name=str;
17     }
18     virtual void display()=0;
19 };
20 class student:public people
21 {
22 private:
23     int studentID;
24 public:
25     student(){}
26     student(int a,string n,int i):people(a,n)
27     {
28         studentID=i;
29     }
30     ~student(){}
31     void setID(int m)
32     {
33         studentID=m;
34     }
35     void display()
36     {
37         cout<<name<<"  "<<age<<"  "<<studentID<<endl;
38     }
39 };
40 class teacher:public people
41 {
42 private:
43     int teacherID;
44 public:
45     teacher(){}
46     teacher(int a,string n,int i):people(a,n)
47     {
48         teacherID=i;
49     }
50     ~teacher(){}
51     void setID(int m)
52     {
53         teacherID=m;
54     }
55     void display()
56     {
57         cout<<name<<"  "<<age<<"  "<<teacherID<<endl;
58     }
59 };
60 int main()
61 {    
62     student s;
63     teacher t;
64     people *p;
65     p=&s;
66     p->setValue(18,"lixinyao");
67     s.setID(20223933);
68     p->display();
69     p=&t;
70     p->setValue(36,"zhao");
71     t.setID(20221212);
72     p->display();
73     return 0;
74 }
复制代码

一、问题描述:

定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard,在Animal类中定义虚函数,输出My name is Animal”,在派生类中分别重新定义该函数,显示“My name is  **”,其中**为各自类名

【输出形式】

三个类的speak函数输出

 【样例输入】

【样例输出】

My name is Animal.

My name is Cat.

My name is Leopard.

二、解题思路:

首先,定义一个父类Animal,其含有虚函数speak(),在定义它的俩个子类,最后,定义一个父类的指针去调用俩个子类的函数实现调用。

三、代码实现:

 

复制代码
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 class Animal
 5 {
 6 public:
 7     virtual void spake()
 8     {
 9         cout<<"My name is Animal."<<endl;
10     }
11 };
12 class Cat:public Animal
13 {
14 public:
15     void spake()
16     {
17         cout<<"My name is Cat."<<endl;
18     }
19 };
20 class Leopard:public Animal
21 {
22 public:
23     void spake()
24     {
25         cout<<"My name is Leopard."<<endl;
26     }
27 };
28 int main()
29 {    
30     Animal *p;
31     Animal a;
32     Cat c;
33     Leopard l;
34     p=&a;
35     p->spake();
36     p=&c;
37     p->spake();
38     p=&l;
39     p->spake();
40     return 0;
41 }
复制代码

 

posted @   信2211-8李欣垚  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示