课堂练习 多态性
来源:互联网 发布:带网络的pe 编辑:程序博客网 时间:2024/05/22 16:07
#include<iostream>
#include<string>
using namespace std;
class Student
{
public:
virtualvoid get()=0;
virtualvoid display()=0;
stringname;
stringnum;
};
class UnderGrad :public Student
{
public:
voidget()
{
cout<< "姓名:"; cin >> name;
cout<< "学号:"; cin >> num;
cout<< "班级号:"; cin >> classnum;
}
voiddisplay();
private:
stringclassnum;
};
class Graduate :public Student
{
public:
voidget()
{
cout<< "姓名:"; cin >> name;
cout<< "学号:"; cin >> num;
cout<< "导师姓名:"; cin >> tutor;
}
voiddisplay();
private:
stringtutor;
};
void UnderGrad::display()
{
cout << "姓名"<<"\t"<<"学号"<<"\t"<<"班级"<<endl;
cout<<name<<"\t"<<num<<"\t"<<classnum<<endl;
}
void Graduate::display()
{
cout << "姓名"<<"\t"<<"学号"<<"\t"<<"导师姓名"<<endl;
cout<<name<<"\t"<<num<<"\t"<<tutor<<endl;
}
template <typename T>
class SList;
template <typename T>
class Node
{
friendclass SList<T>;
public:
Node(T*data) :data(data), next(NULL){}
private:
T*data;
Node<T>*next;
};
template < typename T>
class SList
{
public:
SList():head(NULL),tail(NULL){}
voidInsert(T *newNode)
{
Node<T>*t = new Node<T>(newNode);
if(!head)
{
head= tail = t;
length++;
}
else
{
tail->next= t;
tail= t;
length++;
}
}
voidDelete()
{
Node<T>*t = head;
head= head->next;
deletet;
}
voidPrint()
{
if(!head)
{
cout<< "链表空..." << endl;
return;
}
Node<T>*t;
for(t = head; t; t = t->next)
{
t->data->display();
}
}
private:
intlength;
Node<T>*head;
Node<T>*tail;
};
int main()
{
charc; UnderGrad U; Graduate G;
SList<Student>List;
for(;;)
{
cout<< "创建学生:类型(U)本科生,(G)研究生,(E)结束:";
cin>> c;
if(c == 'E'){ cout << "销毁链表."<<endl; break; }
elseif (c == 'U' || c == 'G')
switch(c)
{
case'U':U.get(); List.Insert(&U); break;
case'G':G.get(); List.Insert(&G); break;
default:break;
}
elsecout << "输入无效请重新输入:" << endl;
}
List.Print();
List.Delete();
List.Delete();
return0;
}
- 课堂练习 多态性
- 课堂练习
- 课堂练习
- 课堂练习题目答案
- 课堂练习讲解
- SQL课堂练习20091009
- 课堂小练习:秘密
- 第四次课堂练习
- Lesson_for_java_day11--课堂练习
- java课堂练习,反射
- 课堂练习 二
- 课堂练习1
- 课堂练习2
- JAVA课堂练习
- 课堂练习3
- 课堂练习4
- 课堂练习5
- 课堂练习1
- hrtimer、hrtimer_init()使用
- equals()的分析
- BootStrap入门教程 (二)
- dm8148 jpeg编解码测试
- selenium测试-初体验(一)
- 课堂练习 多态性
- c语言模块化编程
- 国外程序员整理的系统管理员资源大全
- Unity3D调用自己封装的dll
- BootStrap入门教程 (三)
- 使用lambda表达式时,this数据失效的bug
- FastJson解析工具解析Json
- iOS查看和清理缓存
- mysql数据捣腾