hello everyone.
i'm trying to do a diamond inheritance problem.
Code:
#include<iostream.h>
#include<string.h>
#include<conio.h>
class STUDENT
{
protected :
char *name;
int age;
public :
STUDENT()
{
name=new char[strlen("No Name")];
strcpy(name,"NO Name");
age=5;
}
STUDENT(char *str,int no)
{
name=new char(strlen(str));
strcpy(name,str);
age=no;
}
virtual void getDetails()
{
cout<<"Name : "<<name<<"\nAge : "<<age;
}
virtual char * getName()
{
return name;
}
virtual int getAge()
{
return age;
}
};
class SSC : virtual public STUDENT
{
protected :
int ssc_marks;
public :
SSC() : STUDENT()
{
ssc_marks=1;
}
SSC(char * str, int n1, int n2) : STUDENT(str,n1)
{
ssc_marks=n2;
}
void getDetails()
{
STUDENT :: getDetails();
cout<<"\nSSC Marks : "<<ssc_marks;
}
int getSSCMarks()
{
return ssc_marks;
}
};
class HSC : virtual public SSC
{
protected :
int hsc_marks;
public :
HSC() : SSC()
{
hsc_marks=1;
}
HSC(char * str, int n1, int n2, int n3) : SSC(str,n1,n2)
{
hsc_marks=n3;
}
void getDetails()
{
SSC :: getDetails();
cout<<"\nHSC Marks : "<<hsc_marks;
}
int getHSCMarks()
{
return hsc_marks;
}
};
class CET : virtual public SSC
{
protected :
int cet_marks;
public :
CET() : SSC()
{
cet_marks=1;
}
CET(char * str, int n1, int n2, int n3) : SSC(str,n1,n2)
{
cet_marks=n3;
}
void getDetails()
{
SSC :: getDetails();
cout<<"\nCET Marks : "<<cet_marks;
}
int getCETMarks()
{
return cet_marks;
}
};
class ENGINEERING : public HSC, public CET
{
protected :
double cpi;
public :
ENGINEERING() : HSC(),CET()
{
cpi=1.0;
}
ENGINEERING(char * str, int n1, int n2, int n3, int n4, double n5) : HSC(str,n1,n2,n3), CET(str,n1,n2,n4)
{
cpi=n5;
}
void getDetails()
{
HSC :: getDetails();
cout<<"\nCET Marks : "<<CET :: getCETMarks()<<"\nCPI : "<<cpi;
}
int getCPI()
{
return cpi;
}
};
int main()
{
clrscr();
ENGINEERING s2("gaurav",19,85,72,135,8.5);
s2.getDetails();
getch();
return 0;
}
i get output :
*********************************
Name : NO Name
Age : 5
SSC Marks : 1
HSC Marks : 72
CET Marks : 135
CPI : 8.5
*********************************
the values in the bold are for the default constructor which i'm not expecting. I think i'm missing the concept. please help me.
P.S. : I used turbo c++ compiler if it matters in this case.
thanks in advance.