This simple example demonstrates the C++ syntax for calling base class constructors – as far as I understand it as a C++ learner:
class BaseClass {
protected:
int i;
public:
BaseClass(int x) {
i = x;
}
};
class DerivedClass: public BaseClass {
int j;
public:
DerivedClass(int x, int y): BaseClass(y) {
j = x;
}
Here, the base class constructor can take named arguments to the derived class constructor as input.
Now, what if I want to call BaseClass() constructor with an input value that is not a direct input to DerivedClass()? Basically, I’d like to do some multiline work with x and y within DerivedClass(), then pass a calculated value to BaseClass(). Can this be done with constructors? Should this be done with some kind of initializer method instead?
You can do that, yes:
Note that you can even make
compute()a non-static method but be aware thatDerivedClassorBaseClassmembers won’t be initialized at the time of the call. So you won’t be able to rely on their values.