Purtroppo in c++ non è possibile ereditare un costruttore parametrico.Originariamente inviato da pablo1986
ora,sempre inerente a questo argomento sto provando a capire coma mai con questo codice:
/*provaclass.h*/
class vettore
{
public:
float numero;
vettore(int n);
vettore();
};
class vettoreinteriublic vettore
{
int ciao;
};
/*programma*/
#include<iostream.h>
#include<conio.h>
#include "provaclass.h"
vettore::vettore(int n)
{
numero=(20+n);
}
vettore::vettore()
{
numero=100;
}
main()
{
vettoreinteri vett;
cout<< "Il valore di numero vale: "<<vett.numero<<endl;
getch();
return(0);
}
compliando ed eseguendo questo codice non mi viene segnalato nessun errore e il costruttore chiamato è giustamente vettore di default.
E fino qua tutto ok.
Ma se invece di
"vettoreinteri vett;" nel main metto "vettoreinteri vett(5)" mi da errore mentre io mi attendo che chiami il costruttore "vettore(int n)"
come mai???????
Viene ereditato come costruttore di default sole le funzioni senza argomenti.L'overload dei costruttori non può essere ereditato.
Questo per quanto riguarda l'ANSI C++.