18

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?

BenMorel
  • 34,448
  • 50
  • 182
  • 322
user2643191
  • 313
  • 1
  • 3
  • 8
  • Questions like this one are so very basic that you should be able to look them up in any C++ textbook and even in most tutorials covering the topic. – Arne Mertz Nov 19 '13 at 11:45
  • 4
    You might want to check out [The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) for beginners books and tutorials. Also if you want an online reference, [this one](http://en.cppreference.com/w/cpp) is considered pretty good. – Some programmer dude Nov 19 '13 at 11:46
  • 14
    I don't see anything wrong with this question. He's not asking what they do. – Lightness Races in Orbit Nov 19 '13 at 11:58

4 Answers4

20

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

Caleth
  • 52,200
  • 2
  • 44
  • 75
masoud
  • 55,379
  • 16
  • 141
  • 208
  • Can you please explain what did you mean by "depending on the results of overload resolution"? As overload resolutions happen for a different type of the arguments of a function. Isn't the arguments same here? Can you write how the operator overload definition might look like in both these separate cases. Are you suggesting that for the second case, << might not be a member of ostream class? – Porcupine Apr 02 '18 at 17:17
8

cout is object of type ostream. cin is object of type istream.

ForEveR
  • 55,233
  • 2
  • 119
  • 133
3

They are global variables, declared in the header <iostream>

Pete Becker
  • 74,985
  • 8
  • 76
  • 165
john
  • 85,011
  • 4
  • 57
  • 81
-1

Suppose x is an variable ( let integer type ) .We want to put value in it.What we do ?

We write cin>>x .

But we can also put the int data by writing cin.operator>>(x) . This implies cin is an object and operator >> is a function in which x is passed .