//CommisionEmployee.h //佣金雇员类,薪水完全是销售提成 /* #ifndef x //先测试x是否被宏定义过 #define x 程序段 1 //如果x没有被宏定义过,定义x,并编译程序段 1 #endif 程序段 2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段 1。 */ #ifndef COMMISION_H #define COMMISION_H #include <string> using namespace std; class CommisionEmployee { public: //构造函数,参数分别为firstname,lastname,社会保障编号socialSecurityNumber, // 销售额grossSales,销售提成commisionRate。 CommisionEmployee(const string &,const string &,const string &, double = 0.0,double = 0.0); ~CommisionEmployee();//析构函数 void setFirstName(const string &); string getFirstName(); void setLastName(const string &); string getLastName(); void setSocialSecurityNumber(const string &); string getSocialSecurityNumber(); void setGrossSales(double); double getGrossSales(); void setCommisionRate(double); double getCommisionRate(); double earnings(); void print(); private: string firstName; string lastName; string socialSecurityNumber; double grossSales; double commisionRate; }; #endif
//CommisionEmployee.cpp #include "CommisionEmployee.h" #include <iostream> CommisionEmployee::CommisionEmployee( const string &first,const string &last, const string &ssn,double sales,double rate) { setFirstName(first); setLastName(last); setSocialSecurityNumber(ssn); setGrossSales(sales); setCommisionRate(rate); cout << "CommisionEmployee constructor: " << endl; print(); cout << "\n\n"; } CommisionEmployee::~CommisionEmployee() { cout << "CommisionEmployee destructor: " << endl; print(); cout << "\n\n"; } void CommisionEmployee::setFirstName(const string &first) { firstName = first; } string CommisionEmployee::getFirstName() { return firstName; } void CommisionEmployee::setLastName(const string &last) { lastName = last; } string CommisionEmployee::getLastName() { return lastName; } void CommisionEmployee::setSocialSecurityNumber(const string &ssn) { socialSecurityNumber = ssn; } string CommisionEmployee::getSocialSecurityNumber() { return socialSecurityNumber; } void CommisionEmployee::setGrossSales(double sales) { grossSales = (sales < 0.0)? 0.0:sales; } double CommisionEmployee::getGrossSales() { return grossSales; } void CommisionEmployee::setCommisionRate(double rate) { commisionRate = (rate > 0.0)? rate:0.0 ; } double CommisionEmployee::getCommisionRate() { return commisionRate; } double CommisionEmployee::earnings() { return getCommisionRate()*getGrossSales(); } void CommisionEmployee::print() { cout << "commision employee :" << getFirstName() << " " << getLastName() << endl; cout << "social security number :" << getSocialSecurityNumber() << "\ngross sales :" << getGrossSales() << "\ncommision rate :" << getCommisionRate() << endl; }
//BasePlusCommisionEmployee.h //带底薪佣金雇员类,薪水由底薪和提成构成 #ifndef BASEPLUSCOMMISIONEMPLOYEE_H #define BASEPLUSCOMMISIONEMPLOYEE_H #include "CommisionEmployee.h" #include <string> using namespace std; class BasePlusCommisionEmployee :public CommisionEmployee { public: BasePlusCommisionEmployee(const string &,const string &,const string &, double = 0.0,double = 0.0,double = 0.0); ~BasePlusCommisionEmployee(); void setBaseSalary(double); double getBaseSalary(); double earnings(); void print(); private: double baseSalary; }; #endif
//BasePlusCommisionEmployee.cpp #include "BasePlusCommisionEmployee.h" #include <iostream> using namespace std; BasePlusCommisionEmployee::BasePlusCommisionEmployee(const string &first, const string &last,const string &ssn,double sales,double rate,double salary) :CommisionEmployee(first,last,ssn,sales,rate) { setBaseSalary(salary); cout << "BasePlusCommisionEmployee constructor: " << endl; print(); cout << "\n\n"; } BasePlusCommisionEmployee::~BasePlusCommisionEmployee() { cout << "BasePlusCommisionEmployee destructor: " << endl; print(); cout << "\n\n"; } void BasePlusCommisionEmployee::setBaseSalary(double salary) { baseSalary = salary; } double BasePlusCommisionEmployee::getBaseSalary() { return baseSalary; } double BasePlusCommisionEmployee::earnings() { return getBaseSalary() + CommisionEmployee::earnings(); } void BasePlusCommisionEmployee::print() { cout << "base-salaried " ; CommisionEmployee::print(); cout << "base salary :" << getBaseSalary() << endl; }
//mian.cpp #include "BasePlusCommisionEmployee.h" #include "CommisionEmployee.h" #include <iostream> #include <iomanip> using namespace std; //这个实例旨在明晰继承关系中的析构函数与构造函数调用顺序!!! int main() { cout << fixed << setprecision(2); { CommisionEmployee cemployee("Bob","Swift","0123-7890-32",5000,0.04); cemployee.print(); cout << "employee's earning is " << cemployee.earnings(); cemployee.setCommisionRate(0.05); cout << "\n\nUpdate employee information output by print function:" << endl; cemployee.print(); cout << "employee's earning is " << cemployee.earnings(); cout << endl << endl; } { BasePlusCommisionEmployee bpcemployee("Jax","Lanester","0341-8907-82",8000,0.04,800); bpcemployee.print(); cout << "employee's earning is " << bpcemployee.earnings() << endl; bpcemployee.setCommisionRate(0.06); cout << "\nUpdate employee information output by print function:" << endl; bpcemployee.print(); cout << "employee's earning is " << bpcemployee.earnings(); cout << "\n\n"; } system("pause >> cout"); return 0; }
相关推荐
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
苏州大学C++程序设计教程 第11章 面向对象编程(共21页).ppt 苏州大学C++程序设计教程 第12章 多态(共8页).ppt 苏州大学C++程序设计教程 第13章 抽象类(共2页).ppt 苏州大学C++程序设计教程 第14章 模板(共32...
本教程旨在为初学者和中级程序员提供一个全面的C++学习路径,内容涵盖从基础语法、面向对象编程到高级特性如模板和STL的使用。我们将通过理论讲解与实际案例相结合的方式,帮助读者深入理解C++的强大功能。除此之外...
C++程序设计教程 第11章 面向对象编程(共21页).ppt C++程序设计教程 第12章 多态(共8页).ppt C++程序设计教程 第13章 抽象类(共2页).ppt C++程序设计教程 第14章 模板(共32页).ppt C++程序设计教程 第15章 ...
前7章覆盖了C++基本程序设计的内容,后6章讲述了C++面向对象程序设计的思想和基本方法。教材中对于C++中非常重要的指针、引用、封装、继承、多态和异常处理等都作了详细而清晰的叙述。 教材的编写目的是为学生打好...
C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) C++程序设计教程 第15章 异常(共5页)
Visual C++是一个强大的编程工具,它以C++为语言基础。... 本教程没有对C++语言做全面的介绍,而是针对有一定C语言基础的读者,着重讲解C++面向对象的三大特性——数据封装、继承性、多态性。
Visual C++(以下简称VC)是一个强大的编程工具,它以C++为语言基础。... 本教程没有对C++语言做全面的介绍,而是针对有一定C语言基础的读者,着重讲解C++面向对象的三大特性——数据封装、继承性、多态性。
本教程没有对C++语言做全面的介绍,而是针对有一定C语言基础的读者,着重讲解C++面向对象的三大特性——数据封装、继承性、多态性。对于C++语言的基本概念、基本语法和编程方法
5:面向对象语言:C++、VB、Delphi及JAVA等 二:课程学习的特点 1:观念的转变(从面向过程---面向对象),要忘记“C语言”,又要记住“C语言”。 2:强调实践(程序设计语言相同的特点) 3:充分利用网络资源...
C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。 ...
第三篇是C++面向对象编程篇,主要包括类和对象、继承、多态、运算符重载和输入/输出流等内容;第四篇主要介绍了C++高级特性,内容包括文件、命名空间和引用与内存管理;第五篇的内容主要是C++编程实践,主要分析了...