C++重載函數定義和用法


/************************************************************************/
#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);
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM