我设计了一个类和基指针,但是当我尝试通过基指针访问派生函数时它会出错

时间:2018-01-19 14:56:56

标签: c++ oop

我创建一个基指针并将派生对象的地址传递给它。但是当我尝试通过该指针访问名为fun()的函数时显示错误。为什么这段代码会出错?

#include<iostream>
using namespace std;

class Base
{
    public:
    virtual void fun ()
    {
        cout << "Base::fun()"<< endl;
    }
};

class Derived : public Base
{
    public:
    virtual void fun ( int x )
    {
        cout << "Derived::fun(), x = " << x << endl;
    }
};

int main()
{
    Derived d1;
    Base *bp = &d1;
    bp->fun(5);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

因为在你的基类中你只有一个函数fun()。只有在派生类中才有乐趣(int)。 you fun(int)不会覆盖基类中的fun(),而是完全创建一个新函数 - 函数签名不仅是名称,还有名称和参数。

由于您是通过基指针访问对象,因此无法访问fun(int)但fun()。