Que significa esta linea y que es un objeto funcion

bittracker
22 de Enero del 2005
Hola
Me gustaria que alguien me dijera lo que significa la siguiente linea en C++

int main(int count, char** args)

No entiendo muy bien la idea de objeto funcion, alguien me puede dar una pequeña explicacion

Gracias



Alejandro_
22 de Enero del 2005
Un objeto función (o function object o "functor") es un objeto de una clase que tiene sobrecargado el operador (), de modo que puede usarse como si se tratara de una llamada a función. En ciertas circunstancias tiene ventajas frente a una llamada a función, y es un método bastante usado por la biblioteca estándar.

Para ver un ejemplo simple en funcionamiento, puedes compilar esto:

#include <iostream>
using std::cout;
using std::cin;

class Siguiente
{
public:
int operator() (int n) {// sobrecarga el operador ()
return n+1;
}
};


int main()
{
Siguiente sig;
int n;

cout << "un numero: ";
cin >> n;

cout << "el siguiente de " << n << " es " << sig(n);

cin.ignore();
cin.get();
}

// Alejandro

carmamezo
22 de Enero del 2005
La línea de código es un "truco" (por llamarlo de alguna manera) del viejo MS-DOS. Te explico, desde la pantalla de comandos puedes ejecutar tu programa, esos elemento se ponen para poder recibir datos desde la propia línea de comandos. Pongamos un ejemplo, cuando llamas a la función copy en la línea de comandos le pasas dos parámetros, el primero la ruta del archivo fuente y el segundo la ruta donde quieres copiarlo. Copy es un programa en C que recibe esos argumentos y copia el archivo. Es una manera de recibir parámetros sin necesidad de usar la entrada estandar.
En cuanto a los parámetros, count es un contador que indica el nº de elementos que se le han pasado al programa desde la línea de comandos, args[] es un array de strings que contiene los argumentos. count siempre tiene 1 argumento, aunque no se le haya pasado nada a la función. Este argumento se encuentra en la posición 0 del array args[] y contiene la ruta del propio programa.
Espero que te sirva de ayuda,
Un saludo.