一道关于OO面试题
2016-04-11 14:01
465 查看
腾讯每天上班有员工和主管签到。主管有权限查看签到情况,可以获取的信息有:总共有多少人签到,按照员工的id或者签到顺序查看员工的签到情况,得到倒数n个签到的员工。
先写了下面这些,有时间再补充:
先写了下面这些,有时间再补充:
#include <iostream> #include <string> using namespace std; #define MAX 100 class Employee; Employee *allEmployee[MAX]; //所有员工 //class SignOperator; class Singleton{ public: friend class Charge; static Singleton* GetInstance(){ if(instance==NULL) instance=new Singleton(); return instance; } void IncreaseNum(){++signNum;} void AddSignEmployee(int id) { signEmployee[signNum]=allEmployee[signNum]; IncreaseNum(); } void Delete(){if(instance) delete instance;instance=NULL;} private: static int signNum; Employee *signEmployee[MAX]; Singleton(){} static Singleton *instance; int GetNum(){return signNum;} }; Singleton *Singleton::instance=NULL; int Singleton::signNum=0; class Employee{ protected: int ID; bool isSign; string signTime; Singleton *myInstance; public: Employee(int id=0):ID(id){myInstance=Singleton::GetInstance();} ~Employee(){} void SetID(int id){ID=id;} void Clear(){isSign=false;signTime="NULL";} int GetID(){return ID;} void Sign(string time){isSign=true;signTime=time;myInstance->AddSignEmployee(ID);} bool IsSign(){return isSign;} string GetSignTime(){return signTime;} virtual void GetSignNum(){ cout<<"You have no right to get the message"<<endl; } }; class Charge:public Employee{ private: int ID; public: Charge(int id=0):ID(id){} void GetSignNum(){cout<<"共有 "<<myInstance->GetNum()<<" 人签到"<<endl;} }; int main() { for(int i=0;i<80;i++) allEmployee[i]=new Employee(i+1); for(int i=80;i<MAX;i++) allEmployee[i]=new Charge(i+1); allEmployee[1]->Sign("08:00"); allEmployee[5]->Sign("08:05"); allEmployee[5]->Sign("07:55"); allEmployee[80]->Sign("08::00"); allEmployee[80]->GetSignNum(); return 0; }
相关文章推荐
- 高级软件程序员养成记
- String的总结和应用
- 跋涉不止(38)
- 跋涉不止(37)
- 跋涉不止(36)
- IOS 设计 面试题及答案
- 程序员应该知道的10大基础算法
- 有关Android Activity的面试题和答案
- Java面试更新
- Java面试更新
- 【实习面试】阿里&腾讯offer的点点滴滴(内附干货)
- WAP面试题目
- LeetCode(42)-Best Time to Buy and Sell Stock(卖股票)
- 程序员欢呼:微软Bing开始支持搜索源码、可直接运行!
- 单链表的一些经典面试题
- 算法面试题
- 前端开发面试问题及答案整理
- LeetCode(41)-Rectangle Area
- php程序员应具备的7种能力
- 成为聪明程序员必备的5个技能