·一周点击排行
·热点推荐
Bjarne:为何重载在继承类中不工作?
发布时间:2008-5-29 17:22:00 浏览次数: 280
这个问题(非常常见)往往出现于这样的例子中:
| #include<iostream> using namespace std; class B { public: int f(int i) { cout << "f(int): "; return i+1; } // ... }; class D : public B { public: double f(double d) { cout << "f(double): "; return d+1.3; } // ... }; int main() { D* pd = new D; cout << pd->f(2) << ’\n’; cout << pd->f(2.3) << ’\n’; } |
| f(double): 3.3 f(double): 3.6 |
| f(int): 3 f(double): 3.6 |
但是,如果我需要在基类和继承类之间建立一组重载的f()函数呢?很简单,使用using声明:
| class D : public B { public: using B::f; // make every f from B available double f(double d) { cout << "f(double): "; return d+1.3; } // ... }; |
| f(int): 3 f(double): 3.6 |
讨论此主题请进>>: Bjarne:为何重载在继承类中不工作?