Normally a function is declared static so you can access it without having an instance of the class. They are special in that they don't have a 'this' pointer, and they can only access static members of the class. For example, you would call that function like this:

Output::print(5);

Of course, without actually seeing the context around that code, I can't tell exactly why they felt the need for a static function in a class, but hopefully you should at least understand what it is and how it might be used.

In the context of what you are saying that would make sense after looking at the above code.

The code was presented to illustrate the nature of multiple inheritance from a class.

Am I correct in thinking that "static void print (int i);" was stated in class Output so the return values of rect and trgl could be returned via cout as a result of having inherited "static void print (int i);" from Output?