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.
See operators as functions: For instance,
3 + 4calls 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<<).