:: is known as a scope operator in C++. It tells the codes to look at the scope of the left-hand operand for the name of the right-hand operand. For example, std::cout would say that we want to use cout from the namespace std. That specifies the library name std.
There are ways around having to specify the library every time we want to use something from there. The safest way is a using declaration. It let us use a name from a namespace without qualifying the name with a namespace:: prefix.
1
2
3
4
5
6
7
8
9
#include <iostream>
using std::cout;
int main()
{
cout << "hello world"; // This will work because we have the using declaration
cerr << "hello world"; // This will not work because of no declaration
return 0;
}
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" << endl; // This will work because we have the using declaration
cerr << "hello world" << endl; // This will work because we have the using declaration
return 0;
}
Headers and Namespace Declarations
It is a bad idea to include using in a header file because those codes get copied directly through #include. As such, if a header file has a particular using declaration, every cpp file using the header file will be forced to conform.