C++类继承的一般格式如下所示:
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日
C++继承
最新推荐文章于 2023-12-17 07:14:16 发布