C ++中灵活的类行为

时间:2011-02-22 15:28:23

标签: c++ oop class

我需要用C ++编写一个代表计算抽象的类。该类将具有将运行实际计算的函数。

class Calculation {
    Calculation() {}
    ~Calculation() {}

    Calculate(); //member function that runs a calculation
};

我需要该类能够表示不同种类的计算,并在调用Calculation::Calculate()时运行不同的计算。在C ++中有什么好方法可以做到这一点?我只能将一些标志传递给构造函数,但这似乎不是一个好的解决方案。

3 个答案:

答案 0 :(得分:3)

您可以使Calculate虚拟并创建实现所需变化行为的子类。

答案 1 :(得分:2)

面向对象设计怎么样?

class Calculation
{
    Calculation();

  public:
    virtual ~Calculation() {}    
    virtual int Calculate() = 0;
};

class Sum : public Calculation
{
    int x, y;

  public:
    Sum(int x_, int y_) : x(x_), y(y_) {}
    ~Sum() {}
    virtual int Calculate() { return x + y; }
};

答案 2 :(得分:0)

您应该查看Command Design Pattern。它通常用于在GUI系统中实现“撤销”操作,但非常适合于需要推迟执行实际操作的其他情况。

C ++实现通常使用一个抽象类(接口),其中一个抽象方法没有参数,然后为每个操作实现此接口。计算的参数绑定在派生类的构造函数中。然后,抽象类的实例以某种方式排队。当执行操作时,只需调用泛型,无参数方法即可调用。