未在基类中调用的派生方法

时间:2014-09-30 08:24:34

标签: c++ virtual-method

我不知道如何设置正确的标题。对不起我的问题对我来说很难。

我有一个类myCal.h:

class myCal
{
public:
    myCal();
    int add(int a, int b);
    int sub(int a, int b);
    int expresstion(int a, int b, int c);
};

和myCal.cpp:

myCal::myCal()
{
}

int myCal::add(int a, int b)
{
    return a+b;
}

int myCal::sub(int a, int b)
{
    return a-b;
}

int myCal::expresstion(int a, int b, int c)
{
    return add(sub(a, b), c);
}

在main.cpp中,我有这样的类mockcal:

class mockcal : public myCal
{
public:
    int sub(int a, int b)
    {
        return 100;
    }
    int expresstion(int a, int b, int c)
    {
       return myCal::expresstion(a,b,c);
    }
};

如果我运行myCal.expresstion(3,2,1),返回值为2,那没关系, 但是当我运行mockCal.expresstion(3,2,1)时,返回值仍为2,我希望它返回101.

请帮我这样做,但不要在mockCal :: expresstion中更改任何内容。 非常感谢。

1 个答案:

答案 0 :(得分:1)

如果要在int sub(int a, int b)

中覆盖它,则需要在基类(代码中为myCal类)中创建方法mockcal虚拟
class myCal
{
   public:
   //...
   virtual int sub(int a, int b);
   //..
};