作者:用户tbz3kln7yj | 来源:互联网 | 2023-01-19 10:48
以下是使用Composite模式进行简单算术的C++示例解析器的一部分.
#include
#include
#include
#include
// abstract base class E
class E {
public:
// pure virtual member function
// = 0 means no implementation, only type
virtual int eval() = 0;
// virtual destructor
virtual ~E();
};
// derived class for plus tree nodes
class plus : public E {
class E *e1;
class E *e2;
public:
plus(class E *e1, class E * e2)
{
this->e1 = e1;
this->e2 = e2;
}
~plus();
int eval();
};
我不明白它的plus(class E *e1, class E * e2)
作用.如果E是一个类,那么肯定它不需要以class
关键字作为前缀,在我的理解中它只用于定义新类?为什么函数参数中使用了class关键字?
此外,当我删除class
关键字以产生以下类定义时:
class plus : public E {
E *e1;
E *e2;
public:
plus(E *e1, E * e2)
{
this->e1 = e1;
this->e2 = e2;
}
~plus();
int eval();
};
代码(我的意思是class
删除关键字的所有看似不必要的事件的整个代码,而不仅仅是我在这里提供的代码段)仍然编译,构建和运行,看似正常.class
这里使用关键字的原因是什么?