quinta-feira, 20 de abril de 2006

Idioma RAII em C++ (2)

Desta vez deixo-vos um exemplo trivial de RAII em C++, trata-se do tratamento de ficheiros na biblioteca standard. Contráriamenet ao C em C++ não é necessário abrir ou fechar explicitamente um ficheiro onde se queira escrever ou donde se queira ler, o constructor abre o ficheiro e o destructor fecha-o. Aqui vai um pequeno exemplo:

#include <fstream>
#include <cmath>

int main(int argc, char*argv[])
{
if (argc<2)
return 1;
std::ofstream out(argv[1]);

for (double x=0.0; x<10.0; x+=0.01)
out << x << " " << sin(x) << std::endl;
}


Penso que este exemplo mostra bem que se quisermos fazer tratar um recurso do tipo socket o ideal é escrever ume pequena classe utilitária que possa gerir a abertura e o fecho do socket.