C++的重载函数定义和用法

来源:互联网 发布:永恒纪元戒官网通知 编辑:程序博客网 时间:2024/05/01 13:15
/************************************************************************/
#include <iostream.h>
#include <WINDOWS.H>
 
/************************************************************************/
/* 定义一个CLOCK类                                                      */
/************************************************************************/
class CLOCK
{
    private:
        int hour, minute, second;
    public:
        CLOCK();
        CLOCK(int, int, int);
 
        void update();
        void display();
     
};
 
/************************************************************************/
/* 定义CLOCK函数                                                        */
/************************************************************************/
CLOCK::CLOCK()
{
    hour = minute = second = 0;
    cout << "\t One object initialalized." << endl;
}
 
/************************************************************************/
/* 定义CLOCK重载函数                                                    */
/************************************************************************/
CLOCK::CLOCK(int h, int m, int s)
{
    hour = h;
    minute = m;
    second = s;
    cout << "\t An object initialalized." << endl;
}
 
/************************************************************************/
/*                                                                      */
/************************************************************************/
void CLOCK::update()
{
    second++;
    if(second == 60)
    {
        second = 0;
        minute ++;
    }
    if (minute == 60)
    {
        minute = 0;
        hour++;
    }
    if (hour == 24)
    {
        hour = 0;
    }
}
 
/************************************************************************/
/*                                                                      */
/************************************************************************/
void CLOCK::display()
{
    cout  << hour << ":" << minute << ":" << second <<endl;
}
 
/************************************************************************/
/* main函数                                                             */
/************************************************************************/
void main()
{
    CLOCK MyClock(12, 0, 0);
//声明类名
    while(1)
    {
        MyClock.display();
        MyClock.update();
        Sleep(1000);
    }
}
  


上面的是函数的重载,


下面是函数的隐藏和覆盖


#include <IOSTREAM.H>
 
int a = 5;
int &b = a;
 
/************************************************************************/
/*   Base                                                                   */
/************************************************************************/
class Base
{
public:
    virtual void fn();
};
/*Derived类的fn(int)函数隐藏了Base类的fn函数*/
class Derived:public Base
{
public:
    /*派生类的函数与基类的函数同名,但参数列表不同
    在这种情况下,不管基类的函数声明是否有virtual
    关键字,基类的函数都将被隐藏。*/
    void fn(int);
};
/*Derived2类的fn()函数隐藏了Derived类的fn(int)
*/
class Derived2:public Derived
{
public:
    void fn();
};
 
 
class animal
{
public:
    void eat()
    {
        cout << "animal eat" << endl;
    }
 
    void sleep()
    {
        cout << "animal sleep" << endl;
    }
 
    void breathe()
    {
        cout << "animal breathe" << endl;
    }
};
 
class fish:public animal
{
public:
    void breathe()
    {
        cout << "fish bubble" << endl;
    }
};
 
void fn(animal *pAn)
{
    pAn->breathe();
}
 
void main()
{
    animal *pAn;
    fish fh;
    pAn = &fh;
    fn(pAn);
}
0 0
原创粉丝点击