(1)編寫乙個程式計算正方體、球體和圓柱體的表面積和體積。
定義乙個抽象類shape,在此基礎上派生出正方體類、球體類和圓柱體類,都有計算物件表面積和體積的函式area()和計算物件體積的函式volume (),在主函式中定義乙個shape指標陣列分別指向正方體類、球體類和圓柱體類的物件,並通過shape類的指標實現對這3個物件的成員函式的呼叫,輸出正方體、球體和圓柱體的表面積和體積。
#include
using
namespace std;
const
double pi=
3.14
;class
shape
virtual
double
area()
=0;virtual
double
volume()
=0;}
;class
cube
:public shape
cube
(double side)
double
area()
double
volume()
private
:double side;};
class
sphere
:public shape
sphere
(double radius)
double
area()
double
volume()
private
:double radius;};
class
volumn
:public shape
volumn
(double radius,
double height)
double
area()
double
volume()
private
:double radius;
double height;};
void
test1()
intmain()
某學校對教師工資的計算公式如下:固定工資+課時補貼。教授的固定工資為5000元,每個課時補貼50元;副教授的固定工資為3000元,每個課時補貼30元;講師的固定工資為2000元,每個課時補貼20元。
要求:定義教師抽象類,資料成員包括姓名,性別,工號,固定工資,課時數(上課總的時間),總工資;成員函式pay計算總工資,將其定義為虛函式(因計算方法不同),其他成員函式根據需要進行定義。派生出不同職稱的教師類(每個類具有相同的資料成員);不同類的工資計算方法不同(課時工資不同)編寫程式求若干教師的工資。
#include
#include
using
namespace std;
class
teacher
virtual
void
input()
=0;virtual
void
pay()=
0;virtual
~teacher()
};class
jiaoshou
:public teacher
void
input()
void
pay()}
;class
fujiaoshou
:public teacher
void
input()
void
pay()}
;class
jiangshi
:public teacher
void
input()
void
pay()}
;void
test1()
intmain()
某公司主要有四類人員:
經理、兼職技術員、兼職銷售員,銷售經理。
這些人員具有職工編號、姓名、年齡、性別、級別、月工資
兼職技術人員按照每小時100元領取月工資
兼職銷售人員按照銷售額的4%領取月工資
經理領取8000元的固定工資
銷售經理既拿固定月薪,也領取銷售提成;固定月薪為5000,銷售提成為當月銷售總額的千分之5
程式要具有對所有人提公升級別功能(經理為4級,兼職銷售為1級,其他人員為3級)人員編號基數為1000。每輸入乙個人員資訊,編號順序加1。
類層次結構下:
設計基類:
職工類employee
資料成員:職工編號、姓名、年齡、性別、級別,月工資
靜態資料成員total(記錄人員編號的最大值,新員工的編號在此基礎上增1)
成員函式:
帶參的建構函式(輸入除工資外的基本資訊。設定級別的預設值為1)
設定成員函式change_level(int),用來調整級別,定義純虛函式pay(),用於計算月工資。派生出:
兼職技術員類technician
經理類manager
兼職銷售員類salesman
利用經理類和銷售員類派生出銷售經理類
#include
#include
using
namespace std;
class
employee
employee
(int
long id,string name,
int age,string ***,
int level=1)
void
change_level
(int newlevel)
virtual
void
setid()
=0;virtual
void
input()
=0;virtual
void
pay()=
0;virtual
~employee()
};int employee::total=
1000
;class
technician
:virtual
public employee
technician
(int
long id,string name,
int age,string ***,
int level,
int workhours)
:employee
(id,name,age,***,level)
void
setid()
void
input()
void
pay()}
;class
manager
:virtual
public employee
manager
(int
long id,string name,
int age,string ***,
int level,
double bsalary)
:employee
(id,name,age,***,level)
void
setid()
void
input()
void
pay()}
;class
saleman
:virtual
public employee
saleman
(int
long id,string name,
int age,string ***,
int level,
double ssalary)
:employee
(id,name,age,***,level)
void
setid()
void
input()
void
pay()}
;class
smanager
:public saleman,
public manager
smanager
(int
long id,string name,
int age,string ***,
int level,
double bsalary,
double ssalary)
:saleman
(id,name,age,***,level,ssalary)
,manager
(id,name,age,***,level,bsalary)
void
setid()
void
input()
void
pay()}
;void
test1()
intmain()
C 多型性與虛函式
物件導向程式設計中的多型性是指向不同的物件傳送同乙個訊息,不同物件對應同一訊息產生不同行為。在程式中訊息就是呼叫函式,不同的行為就是指不同的實現方法,即執行不同的函式體。也可以這樣說就是實現了 乙個介面,多種方法 從實現的角度來講,多型可以分為兩類 編譯時的多型性和執行時的多型性。前者是通過靜態聯編...
C 多型性 與 虛函式
1.運算子過載 運算子過載形式 1 過載為類的成員函式 運算子過載函式說明為類的成員函式的格式為 類名 operator 運算子 參數列 如 c1 c2 編譯器將給出的解釋為 c1.operator c2 該運算子過載函式僅僅有乙個引數,所以過載為成員函式時,雙目運算子僅有乙個引數。對於單目運算子,...
C 多型性與虛函式
多型性是物件導向程式設計的關鍵技術之一。利用多型性技術,可以呼叫同乙個函式名的函式,實現完全不同的功能。若程式語言不支援多型性,不能稱為物件導向的語言。在c 中有兩種多型性 1 定義格式 虛函式是乙個類的成員函式,定義格式如下 virtual 返回型別 函式名 參數列 說明 2 通過虛函式實現多型性...