class BaseClass{
// 基類的定義
};
class DeriveClass : public BaseClass{
// 派生類的定義
};
上面的訪問修飾符public只是一種情況,當然也可以是其他的,如private,protected。
構造函數繼承的一般格式:
DeriveClass() : BaseClass() {
}
DeriveClass(Type1 var1,...TypeM varM,...,TypeN varN) : BaseClass(Type1 var1,...TypeM varM) {
// 對var(M+1)到varN進行相關初始化工作
}
成員函數繼承的一般格式:
void Method() {
BaseMethod();
// 增加的專有的操作實現
}
void Method(Type1 var1,...TypeM varM,...,TypeN varN) {
BaseMethod(Type1 var1,...TypeM varM);
// 增加的專有的操作實現:對var(M+1)到varN
}
通過下面的例子理解單繼承:
Date類就是日期,包括年月日;CurrentDateTime類繼承自Date,包含了日期的同時,還包括具體的時間時分秒。
1、Date類的頭文件date.h
Date類的頭文件date.h代碼如下:
#ifndef DATE_H_
#define DATE_H_
#include <iostream>
using namespace std;
class Date{
int year;
int month;
int day;
public:
Date();
Date(int year,int month,int day);
void ModifyDate(int year,int month,int day,bool ok);
void DisplayDate();
};
#endif /*DATE_H_*/
2、Date類的定義
Date類的定義實現如下:
#include "date.h"
Date::Date(){
year = 0;
month = 0;
day = 0;
}
Date::Date(int year,int month,int day){
this->year = year;
this->month = month;
this->day = day;
}
void Date::ModifyDate(int year,int month,int day,bool ok){
if(ok){
this->year = year;
this->month = month;
this->day = day;
}
}
void Date::DisplayDate() {
cout << year << "年" << month << "月" << day <<"日";
}
3、派生類CurrentDateTime類
CurrentDateTime類的實現如下:
#include "date.h"
class CurrentDateTime : public Date{
int hour;
int minute;
int second;
public:
CurrentDateTime() : Date(){
hour = 0;
minute = 0;
second = 0;
}
CurrentDateTime(int year,int month,int day,int hour,int minute,int second) : Date(year,month,day){
this->hour = hour;
this->minute = minute;
this->second = second;
}
void ModifyCurrentDateTime(int year,int month,int day,int hour,int minute,int second,bool ok) {
ModifyDate(year,month,day,ok);
if(ok){
this->hour = hour;
this->minute = minute;
this->second = second;
}
}
void DisplayCurrentDateTime() {
DisplayDate();
cout << hour << "時" << minute << "分" << second << "秒" << endl;
}
};
4、測試
int main(){
CurrentDateTime currentDateTime0;
currentDateTime0.DisplayCurrentDateTime();
currentDateTime0.DisplayDate();
cout << endl;
CurrentDateTime currentDateTime(2008,7,29,9,35,57);
currentDateTime.DisplayCurrentDateTime();
currentDateTime.DisplayDate();
cout << endl;
currentDateTime.ModifyCurrentDateTime(2008,7,29,9,52,21,false);
currentDateTime.DisplayCurrentDateTime();
currentDateTime.DisplayDate();
cout << endl;
currentDateTime.ModifyCurrentDateTime(2008,7,29,9,52,21,true);
currentDateTime.DisplayCurrentDateTime();
currentDateTime.DisplayDate();
return 0;
}
5、結果輸出
結果輸出如下:
0年0月0日0時0分0秒
0年0月0日
2008年7月29日9時35分57秒
2008年7月29日
2008年7月29日9時35分57秒
2008年7月29日
2008年7月29日9時52分21秒
2008年7月29日