关于继承:
代码如下:
#include<iostream>
using namespace std;
class Clock //定义时钟类
{
public:
void SetTime(int h, int m, int s); //设定时间
void ShowTime(); //显示时间
//Clock(int H=0, int M=0, int S=0);
~Clock(); //析构函数
private:
int H, M, S;
};
void Clock::SetTime(int H, int M, int S)
{
this->H=H; //this指针指向当前类的成员,故和SetTime的形参名区别开来
this->M=M; //如果是H=H,M=M,S=S的话就会出现很大的负数
this->S=S;
};
void Clock::ShowTime()
{
cout<<"H="<<H<<"/t"<<"M="<<M<<"/t"<<"S="<<S<<endl;
};
Clock::~Clock()
{
cout<<"调用父类析构函数"<<endl;
};
class AlarmClock: public Clock
{
public:
void SetAlarm(int AH, int AM);
void SwitchAlarm(bool Open=true); //设定闹钟开关
void ShowTime();
~AlarmClock()
{cout<<"调用子类析构函数"<<endl;};
private:
int AH, AM;
};
void AlarmClock::SetAlarm(int AH, int AM)
{
this->AH=AH;
this->AM=AM;
};
void AlarmClock::ShowTime()
{
cout<<"AH="<<AH<<"/t"<<"AM="<<AM<<endl;
};
void main()
{
Clock C1;
C1.SetTime(1,0,0);
C1.ShowTime();
AlarmClock c2;
c2.SetAlarm(1,2);
c2.ShowTime();
}
说明:有些函数是按书上敲的,有些功能没实现,以后再完善
总结 : 1. 关于this指针.this指针指向当前类的成员,故和SetTime的形参名区别开来
如果是H=H,M=M,S=S的话就会出现很大的负数.
2.子类进行析构的时候同时析构2次。也就是说如果子类进行析构,就会调用2个析构函数,一个是自己的析构函 数,一个是父类的析构函数。那如果子类是通过继承2次得到的话,析构时就会调用3个析构函数,一个是自己 的,另外2个是父类的析构函数
3.若父类中有成员函数名与子类中相同,则子类中定义的会把父类中定义的那个覆盖。就相当于若局 部 变量和全局变量同名,则局部变量覆盖全局变量