Mick Mick - 1 month ago 6
C++ Question

C++ beginner question

I am in the process of learning C++ in order to understand some open source code I have been given.

I came across a line as follows:

cmd << '\n'


I assumed that "cmd" must be some kind of special receptor for a stream, perhaps a string - but on further investigation I found that "cmd" was an entire class with assorted data and functions. This has completely confused me. Why doesn't the code look like this:

cmd.stringpart << '\n'


Can someone tell me what's going on, or suggest an article for me to take a look at.

CORRECTION: cmd is an instance of a class rather than the class itself.

Answer

See an operator as a function: For example, 3 + 4 calls a binary function taking two numbers and returning the sum of them.

Here, the author has created such a function to define the << operator, so that it can work with a cmd class instance as the left parameter, and a string as the right parameter. This is called "operator overloading". Look for operator<< occurrences in your code.

This can also be a member function of the cmd class, taking one parameter (still named operator<<).