C\C++—— 重載、重寫、重定義

重載

1、只能出現在同一個類當中

2、子類無法重載父類函數,父類中同名的函數會被子類中同名的函數覆蓋

3、重載是在編譯期間根據函數參數和個數決定的

重寫

1、必須發生在父類和子類當中

2、子類對象中有和父類中同名的函數

3、使用virtual聲明之後能夠產生多態(如果不使用virtual,那叫重定義

class Parent
{
public:
	void GetName()
	{
		printf("\nParent");
	}

	virtual void Fun()
	{
		printf("Parent");
	}

	virtual void Fun(int i)
	{
		printf("Parent:i");
	}

	virtual void Fun(int i,int j)
	{
		printf("Parent:i j");
	}
};


class Child:public Parent
{
public:
	void GetName()
	{
		printf("\nChild");
	}

	virtual void Fun(int i,int j)
	{
		printf("Child:i j");
	}
	virtual void Fun(int i,int j, int l)
	{
		printf("Child:i j l");
	}

};


////////////////main
{
    Child c;
    c.Fun(1,2);//重載、重寫
    
    c.GetName();//重定義

    //若想調用父類函數
    c.Parent::Fun(1);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章