This is from the <iostream>
:
namespace std
{
extern istream cin; ///< Linked to standard input
extern ostream cout;
...
It seems by using extern
the data types defined in other namespaces will just be available?
extern
is used to refer to a variable defined in a different compilation unit (for now, you can think of a compilation unit as a .cpp file). The statements in your example declare rather than define cin
and cout
. It is telling the compiler that the definition of these objects is found in another compilation unit (where they are not declared as extern
).