【发布时间】:2017-01-09 08:23:56
【问题描述】:
class Base {
public:
virtual void f();
void f(int);
virtual ~Base();
};
class Derived : public Base {
public:
void f();
};
int main()
{
Derived *ptr = new Derived;
ptr->f(1);
delete ptr;
return 0;
}
ptr->f(1);显示以下错误:“函数调用中的参数过多”。
为什么这是不可能的?派生不是继承了基础的所有函数并且可以免费使用其中的任何一个吗? 我可以显式调用它,它会起作用,但为什么不允许这样做?
【问题讨论】:
-
f(int)在derived中没有重载,你期望什么? -
对于多态性,
ptr应该是一个指向 base 类的指针。 -
但是 Derived 不应该继承 Base 函数吗?或者它不适用于指针?
-
我想我现在明白了,派生类可以访问函数,只是不在 main 中吗?
标签: c++ polymorphism