cout and cin are not functions, so what are they?

c++, iostream

Solution

`std::cout` and `std::cin` are global objects of classes `std::ostream` and `std::istream` respectively, which they've overloaded operator `<<` and `>>`. You should read about operator overloading.

   cout    <<      expr  ;
  ~~~~~~  ~~~~   ~~~~~~~~
  object   op.   argument 

It's like a function call; the function is an overloaded operator and a shortcut for this:

cout.operator<<(expr);

or this:

operator<<(cout, expr);

depending on the results of overload resolution

Problem

Generally in C programming language We consider printf and scanf to be functions. when it comes to cout and cin, in C++ what are they?I mean they cant be functions as they are not followed by parenthesis,so they are not functions. So what are cout and cin are standard input and output functions?OR something else?

Original source

Related problems