class A{public:void fun(int tmp);void fun(float tmp); // 重載 參數類型不同(相對于上一個函數)void fun(int tmp, float tmp1); // 重載 參數個數不同(相對于上一個函數)void fun(float tmp, int tmp1); // 重載 參數順序不同(相對于上一個函數)int fun(int tmp); // error: 'int A::fun(int)' cannot be overloaded 錯誤:**注意重載不關心函數返回類型**
#include <iostream>using namespace std;class Base{public:void fun(int tmp, float tmp1) { cout << "Base::fun(int tmp, float tmp1)" << endl; }};class Derive : public Base{public:void fun(int tmp) { cout << "Derive::fun(int tmp)" << endl; } // 隱藏基類中的同名函數};int main(){Derive ex;ex.fun(1); // Derive::fun(int tmp)ex.fun(1, 0.01); // error: candidate expects 1 argument, 2 providedreturn 0;}
說明:上述代碼中 ex.fun(1, 0.01); 出現錯誤,說明派生類中將基類的同名函數隱藏了。若是想調用基類中的同名函數,可以加上類型名指明 ex.Base::fun(1, 0.01);,這樣就可以調用基類中的同名函數。
#include <iostream>using namespace std;class Base{public:virtual void fun(int tmp) { cout << "Base::fun(int tmp) : " << tmp << endl; }};class Derived : public Base{public:virtual void fun(int tmp) { cout << "Derived::fun(int tmp) : " << tmp << endl; } // 重寫基類中的 fun 函數};int main(){Base *p = new Derived();p->fun(3); // Derived::fun(int) : 3return 0;}
cookie和session區別、重寫和重載的區別:
隱藏和重寫,重載的區別:
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态