Firstly…
typedef enum {
Stop, Continue, Skip,
LastRetType
}
RetType;
…is a poor way of saying…
enum RetType {
Stop, Continue, Skip,
LastRetType
};
…which simply creates an enum type that can take on the listed values (Stop defaults to 0, Continue to 1 etc..).
The pre function…
virtual RetType pre(PDTAdd & d) {
return Continue;
}
…then returns any of these values – above it hardcodes Continue.
It is virtual though, which means a derived class can write its own override of the function, and if someone has a Traversal* p or Traversal& r that actually refers to an instance of such a derived class, it will be the most-derived class that provides an override (if any) whose function is run by p->pre(d) or r.pre(d). This is known as virtual dispatch, and is the way C++ supports runtime polymorphism, which is one of the fundamental functionalities for Object Oriented programming.
Your next move should be a good book or tutorial.
2
solved Having issue understand what does this constructor do