Buongiono ragazzi!
Sono un ragazzo che studia informatica all'univerisita ed il primo anno abbiamo svolto la programmazione procedurale con il C++/C avendo conseguito delle discrete competenze in C/C++ ho pensato di portarmi avanti e di passare alla programmazione ad oggetti (che verrà svolta quest'anno in java).
Vorrei ultimare le mie conoscenze in C++ imparando a programmare anche ad Oggetti per fare programmini non più giocattolosi !
La mia domanda riguarda i costruttori!
Nella dichiarazione di una classe dopo il metodo public va dichiarato un costruttore (se non viene dichiarato, il compilatone ne genera uno lui).
Nella compilazione da terminale con il compilatore g++ di linux avevo dei problemi a compilare perchè sbagliavo a dichiarare il costruttore , ora come ora ho risolto il problema ma ancora non mi spiego perchè va fatto in questo modo! Ho cercato degli esempi di dichiarazione di un costruttore su internet e ho notato che vanno dichiarati due costruttori!
MI spiego meglio nel codice!
//File persone.h
#include <iostream>
#include <string>
using namespace std;
class Persona{
public:
//Costruttori
Persona(); // Costruttore semplice
Persona(string nome, string cognome, int eta);
/* Io prima avevo dichiarato solo il costruttore
Persona(string nome, string cognome, int eta);
ed il compilatore mi dava un errore che non riusciva a trovare Persone::Persone(...);*/
private:
string nome;
string cognome;
int eta;
};
File persone.cpp
#include "persone.h"
// Proviamo a fare il costruttore
Persona::Persona(){
nome = " ";
cognome = " ";
eta = 0;
}
// Prima dichiaravo solo questo con una modifica nel corpo.
Persona::Persona(string nome, string cognome, int eta){
// prova di compilazione
cout << "****** Prova di compilazione Costruttore" << endl;
nome = nome; // dichiaravo nome = " ";
cognome = cognome; // stesso discorso
eta = eta; // eta = 0;
}
file primario.cpp
#include <iostream>
#include "persone.h"
using namespace std;
int main(){
Persona person; // qui non facevo altro che preallocare spazio per la classe nell heap!
// e il copilatore mi ritornava l'errore che ho descritto prima
return 0;
}
Ripeto il mio dubbio sul perchè ho dovuto dichiarare i due Costruttori.
Vi ringrazio in anticipo e vi auguro una buona giornata.
Ps: Spero che la mia domanda e il mio post siano stati chiari!