All of the examples in the text have the getter functions as a void return. So, I concluded that getters and setters didn't return anything.
As far as I know, there is no rule in the C++ standard that says that getters and setters must or must not return anything. This is all a matter of how you want to design your class' public interface. In fact, in many situations you may not want getters and setters at all.

In this case, your getter does not return anything, so it cannot directly participate in your formula. You have to use it to get the radius value into the radius variable, and then have the radius variable participate in the formula.

I also thought that " derived class : base class " was necessary for both inheritance and composition. But composition included a base class type variable in the member variable list.
It is only necessary for inheritance. Where composition is not concerned with base classes or derived classes. It is merely concerned with classes and the members they own.