Salve ragazzi non capisco il motivo per cui quando voglio fare la copia di d appartente alla classe D derivata da B mi chiama il costruttore a zero argomenti di B anziche quello di copia...
#include <iostream>
#include <stdlib.h>
using namespace std;
class B{
protected:
char* s;
int n;
public:
B():s("ciao"),n(9){}
B(const char* S,const int N):s(new char[strlen(S)+1]),n(N){strcpy(s,S);cout<<"Costruttore.base\n";}
~B(){delete []s;cout<<"distruttore base\n";}
B(const B&);
void chisei(){cout<<s<<" "<<n<<endl;}
};
class Dublic B{
protected:
char* q;
public:
D():q("ciao"){}
D(const char* S,const int N,const char* Q):B(S,N),q(new char[strlen(Q)+1]){strcpy(q,Q);cout<<"costruttore derivata\n";}
~D(){delete q;cout<<"distruttore derivata\n";}
D(const D&);
void chisei(){cout<<s<<" "<<n<<" "<<q<<endl;}
};
int main(int argc, char *argv[])
{
char* s="les";
int n=0;
char* q="leqq";
D d(s,n,q);
D m(d);
m.chisei();
system("PAUSE");
return 0;
}
B::B(const B& b1)
{ n=b1.n;s=new char[strlen(b1.s)+1];strcpy(s,b1.s);cout<<"copio base\n";}
D:(const D& b1)
{ q=new char[strlen(b1.q)+1];strcpy(q,b1.q);cout<<"copio derivata\n";}
MI POTETE AIUTARE PERFAVORE?GRAZIE