The following is a part of a C++ example parser for simple arithmetic using the Composite pattern.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
// 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
关键字的原因是什么?