博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++抽象类编程小案例
阅读量:7186 次
发布时间:2019-06-29

本文共 1883 字,大约阅读时间需要 6 分钟。

hot3.png

编写一个C++程序, 计算程序员( programmer )工资

1 要求能计算出
    初级程序员( junior_programmer )
    中级程序员 ( mid_programmer )
    高级程序员( adv_programmer)的工资
2 要求利用抽象类统一界面,方便程序的扩展,
    比如:新增, 计算 架构师 (architect ) 的工资
 

C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类。(接口和协议)

下面程序定义一个程序员的类,里面有纯虚函数。

#include 
using namespace std;class programmer{public: virtual void getSal() = 0;};//初级程序员class junior_programmer :public programmer{public: junior_programmer(char *name,char *job,int sal) { this->name = name; this->job = job; this->sal = sal; } virtual void getSal() { cout << name << " " << job << " : " << sal << endl; }private: char *name; char *job; int sal;};//中级程序员class mid_programmer :public programmer{public: mid_programmer(char *name, char *job, int sal) { this->name = name; this->job = job; this->sal = sal; } virtual void getSal() { cout << name << " " << job << " : " << sal << endl; }private: char *name; char *job; int sal;};//高级程序员class adv_programmer :public programmer{public: adv_programmer(char *name, char *job, int sal) { this->name = name; this->job = job; this->sal = sal; } virtual void getSal() { cout << name << " " << job << " : " << sal << endl; }private: char *name; char *job; int sal;};//架构师class architect :public programmer{public: architect(char *name, char *job, int sal) { this->name = name; this->job = job; this->sal = sal; } virtual void getSal() { cout << name << " " << job << " : " << sal << endl; }private: char *name; char *job; int sal;};//计算工资,简单的框架void call_programer_sal(programmer *base){ base->getSal();}int main(){ junior_programmer jp("小赵", "初级程序员", 4000); mid_programmer mp("小钱", "中级程序员", 8000); adv_programmer ap("小王", "高级程序员", 12000); //系统扩展 architect arch_pro("小周", "架构师", 16000); call_programer_sal(&jp); call_programer_sal(&mp); call_programer_sal(&ap); call_programer_sal(&arch_pro); return 0;}

 

转载于:https://my.oschina.net/startstorm/blog/851842

你可能感兴趣的文章
mysql之触发器trigger
查看>>
Spring单例Bean和线程安全
查看>>
[Angular 2] Using Array ...spread to enforce Pipe immutability
查看>>
Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
查看>>
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
查看>>
Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor...
查看>>
apt-get常用命令
查看>>
刘波对大一的寄语
查看>>
利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录
查看>>
JS实现信息的显示和隐藏
查看>>
Linux系统启动流程 图解
查看>>
一个js爬虫
查看>>
[sh]函数+条件表达式
查看>>
hdu 1455 Sticks
查看>>
浅谈iOS中的userAgent
查看>>
[Django] The admin interface
查看>>
Hibernate3和4版本的不同
查看>>
代码改动后执行结果同改动之前结果一样
查看>>
十二道锋味——既是食,也是人
查看>>
递归与非递归实现斐波那契数列
查看>>