[C con Clase] consulta de ejercicio de codeblocks

Steven Davidson srd4121 en njit.edu
Dom Oct 30 12:33:03 CET 2011


Hola Alfredo,

2011/10/30 Alfredo Ruiz Hernandez <arh1990 en hotmail.com>:
> Bueno antes que nada esto esta mal, ya que tu debes de estudiar y hacer tus
> propios codigos, pero te ayudare con esto, con la información que das esto
> entendi, el programa lo hice en dev c++ pero no debe de haber problema para
> que lo pases a codeblocks ya que de todas formas es c++, espero que te
> ayude:

Quisiera comentar algunos matices acerca del código fuente enviado.

> <--------------------------------------------------------------------------------------------------------------------------->
> #include <iostream>
> #include <string>
>
> using namespace std;
>
> class Clempleados{
>       private:
>               string nombre;
>               string apellido;
>               int horas;
>               float salarioHora;
>       public:
>              Clempleados(string n, string a, int h, float s);

Aconsejo pasar objetos por referencia y que sean constantes, si no se
quiere modificar su contenido. Esto es,

Clempleados( const string &n, const string &a, int h, float s );

También aconsejo nombres más descriptivos, incluso para los parámetros.

>

[CORTE]

> int main(int argc, char **argv){
>     string nombre;
>     string apellido;
>     int horas = 0;
>     float salario = 0.0f;
>
>     cout << "Ingresa el nombre del empleado: ";
>     cin >> nombre;
>     cout << "Ingresa el apellido del empleado: ";
>     cin >> apellido;
>     cout << "Ingresa las horas trabajadas incluyendo las horas extras: ";
>     cin >> horas;
>     cout << "Ingresa el salario por hora trabajada: ";
>     cin >> salario;
>     fflush(stdin);

Esto no es nada aconsejable porque no es una implementación estándar
de ANSI C/C++. Además, no estamos usando 'stdin', sino 'cin' que puede
o no estar vinculado a 'cin'.

>
>     Clempleados *empleado = new Clempleados(nombre, apellido, horas, salario);
>

No es necesario instanciar un objeto dinámicamente. Podemos crear uno
como una variable "normal y corriente"; esto es,

Clempleados empleado( nombre, apellido, horas, salario );

>     cout<<"\n\nLos datos del empleado son:" <<endl;
>     cout<<"Nombre: " << empleado->get_Nombre().c_str()<<endl;
>     cout<<"Apellido: " <<  empleado->get_Apellido()<<endl;
>     cout<<"El salario total es: " <<  empleado->salarioTotal()<<endl;
>

Obviamente, si instancias el objeto "estáticamente", deberás usar el
operador . de acceso a miembro.

>     cin.get();
> }
>

Al final, si vas a usar 'new' DEBES usar 'delete' para liberar esa
memoria dinámicamente adjudicada.

Adicionalmente, la función 'main()' debe retornar un entero, que por
convenio 0 (cero) indica una terminación exitosa del programa.


Espero haber aclarado algunas cosas.

Steven




Más información sobre la lista de distribución Cconclase