cara, funciona porque no c++, os métodos padrões das bibliotecas estão organizados em namespaces, para utilizar eles, tu precisa declarar com a instrução using. no caso, quando tu declara "using std::cout" tu esta dizendo que tu quer utilizar o metodo cout que esta no namespace std. Tb funcionaria utilizando using namespace std; nesse caso, tu poderia utilizar qualquer metodo declarado e implementado no namespace std. espero ter esclarecido, mas qualquer coisa posta ou pega meu icq ai.