For all we know, ok_flag, time_range and prefix are data members of the class ClassA. We can assume that the first two might be bools, but we have know idea what type prefix might be (int, char, std::string, custom class) unless we go and look it up in the class declaration where you might hope to see something like:
Code:
class ClassA
{
//...
bool ok_flag;
bool time_range;
SomeType prefix;
};
The initialisation list is made up of "constructor calls" for the data members of the class to initialize these members. Built-in types, such as ints and bools, are not really classes and hence do not have a real constructor, but do accept a constructor-like syntax for this purpose.
If there is nothing between the parenthesis, it means using the default constructor of the type (one that takes no arguments). If prefix happened to be an int, this should set its value to 0 (but I'd prefer to be explicit - prefix(0)). If it happens to be a std::string, it would initialize prefix to be an empty std::string. Etc.