案例:1子類繼承父類所有成員函數 和成員變量
class Base
{
public:
void func(void)
{
cout<<"父類中的void func"<<endl;
}
void func(int a)
{
cout<<"父類中的int func a = "<<a<<endl;
}
};
class Son:public Base
{
public:
};
void test01()
{
//爲啥構造和析構除外?父類的構造和析構 只有父類自己知道該怎麼做(構造和析構 系統自動調用)
//子類會繼承父類所有成員函數(構造和析構函數除外) 和成員變量
Son ob1;
ob1.func();//訪問的是父類的void func(void)
ob1.func(10);//訪問的是父類的func(int a)
}
案例2:子類和父類 同名成員函數
class Base
{
public:
void func(void)
{
cout<<"父類中的void func"<<endl;
}
void func(int a)
{
cout<<"父類中的int func a = "<<a<<endl;
}
};
class Son:public Base
{
public:
//一旦子類 實現了 父類的同名成員函數 將屏蔽所有父類同名成員函數
void func(void)
{
cout<<"子類中voidfunc"<<endl;
}
};
void test01()
{
//爲啥構造和析構除外?父類的構造和析構 只有父類自己知道該怎麼做(構造和析構 系統自動調用)
//子類會繼承父類所有成員函數(構造和析構函數除外) 和成員變量
Son ob1;
ob1.func();
//ob1.func(10);//err //一旦子類 實現了 父類的同名成員函數 將屏蔽所有父類同名成員函數
//如果用戶 必須要調用父類 的同名成員函數 必須加作用域
ob1.Base::func();//調用父類的void func
ob1.Base::func(10);//調用父類的int func
}
int main(int argc, char *argv[])
{
test01();
return 0;
}
運行結果