//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++与Java比较教程》详细比较和对比了当今最流行的两种编程语言C++和Java,旨在教授互联网时代至关重要的技能和面向对象编程技术。作者Avinash C. Kak凭借其成功教授的课程,撰写了一本全面的...
面向对象编程(OOP) - **类与对象**:了解类的概念及其成员函数、属性;掌握对象的创建和使用。 - **继承**:理解类的继承机制,包括单继承和多继承。 - **封装与多态**:学习封装的实现方法以及多态性的概念。 ###...
《C++面向对象编程实例大全》是一本专为初级学习者设计的教程,旨在通过丰富的实例深入浅出地讲解C++的面向对象编程概念。面向对象编程(Object-Oriented Programming,简称OOP)是C++的核心特性,也是现代软件开发...
《Visual C++面向对象编程教程》是清华大学王育坚教授编著的一本深入浅出的教材,旨在教授读者如何利用Microsoft的Visual C++环境进行面向对象的程序设计。该书结合了理论与实践,旨在帮助初学者理解面向对象编程的...
《Visual C++面向对象编程教程 王育坚》第二版是深入学习C++编程的一本经典教材,尤其强调面向对象编程的理论与实践。王育坚教授以其丰富的教学经验,将复杂的C++语言概念与实际应用相结合,帮助读者更好地理解和...
综上所述,这本C++基础教程覆盖了从最基础到较为高级的主题,不仅包括了C++语言的语法和标准库的使用,还涵盖了面向对象编程、高级编程概念以及如何利用这些知识来编写实用的C++程序。通过结合实践,本教程旨在帮助...
本教程的PPT文件分别涵盖了C++的多个版本和主题,例如可能包含C++2、C++5、C++11等版本的关键特性介绍,以及面向对象编程的各个核心概念。通过学习这些材料,你可以逐步掌握C++的面向对象编程,提高编程能力。
《Visual C++面向对象编程教程--王育坚》是一本深入浅出地介绍如何使用Microsoft的Visual C++环境进行面向对象编程的教材。这门课程或教程的重点在于理解和应用C++语言的核心特性,特别是它的面向对象特性,如类、...
5. `cpphtp5_06_IM.pdf`:这一章可能涉及到类和对象,这是面向对象编程的核心。学习者会接触到类的定义、对象的创建、成员函数、访问修饰符(public、private、protected),以及构造函数和析构函数。 6. `cpphtp5_...
《浙江大学_C++面向对象_翁凯教学视频[1-13][共41]》是一部深入探讨C++面向对象编程的教程,由浙江大学的翁凯教授主讲。本系列视频涵盖了C++语言的核心面向对象特性,包括类、对象、封装、继承、多态等关键概念。...
《C++大学基础教程》是针对初学者设计的一门课程,旨在系统地介绍C++编程语言的基本概念和应用。这本教程,特别是第五版《Small C++ How to Program》,是许多大学入门级C++课程的首选教材。它深入浅出地讲解了C++的...
学习C++的过程中,你需要理解面向对象编程的概念,包括封装、继承和多态,这些都是C++的核心特性。封装允许我们将数据和操作数据的方法组合在一起,形成一个独立的对象;继承则是实现代码重用的一种方式,一个类可以...
这本书深入浅出地介绍了如何使用Microsoft的Visual C++开发环境进行面向对象编程,涵盖了C++语言的基础、类与对象、封装、继承、多态等核心概念。 首先,面向对象编程(Object-Oriented Programming,简称OOP)是...
《Visual C++ 面向对象编程教程》是王育坚编著的一本针对C++初学者的指导书籍,旨在帮助读者深入理解C++语言,特别是其面向对象编程(Object-Oriented Programming, OOP)的概念和技术。C++是一种强大的、通用的编程...
第2章“C++基础”回顾了C++的基础语法,如变量、数据类型、控制结构、函数等,这些都是学习面向对象编程的必备前提。理解这些基本元素对于后续章节的学习至关重要。 第3章和第4章“类和对象1”及“类和对象2”详细...
C++基础教程通常被设计为引导初学者掌握这种语言的基础知识,并逐步深入至高级主题。本教程由Juan Soulié编写,Jing Xu(aqua)翻译,并经过最新校对。它覆盖了从C++的基础概念到ANSI-C++标准中新增功能的广泛话题。 ...