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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结