重載
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);
}