1、常规
Node.h
class Node {
public:
virtual double Calc() const = 0;
virtual ~Node() {};
};
class NumberNode : public Node
{
public:
NumberNode(double number) : number_(number)
{
}
double Calc() const;
private:
const double number_;
};
class BinaryNode : public Node
{
public:
BinaryNode(Node* left, Node* right):left_(left), right_(right)
{}
~BinaryNode();
protected:
Node* const left_; // const在*右边,表示指针不能再指向别的节点了
Node* const right_;
};
// 加法
class AddNode : public BinaryNode
{
AddNode(Node* left, Node* right) : BinaryNode(left, right)
{
}
double Calc() const;
};
// 减法
class SubNode : public BinaryNode
{
SubNode(Node* left, Node* right) : BinaryNode(left, right)
{
}
double Calc() const;
};
// 乘法
class MultiplyNode : public