为什么在此代码中使用class关键字?

时间:2017-09-10 10:08:11

标签: c++ class parameters keyword

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关键字的原因是什么?

0 个答案:

没有答案