Código fuente original

Golpe manual, no es necesario definir un constructor, ¿verdad? Agregue si es necesario

# include & ltiostream & gt

# include & ltstring& gt

Usar espacio de nombres std

Clase CData

{

Protegido:

Nombre de cadena;

Público:

Impresión virtual vacía ()

{

cout & lt& lt"name:" & lt& ltname& lt& ltendl

}

};

Clase de profesor: CData público virtual

{//Hay muchas herencias, así que utilice la herencia virtual.

Protegido:

int sal

Público:

void print()

{

CData::print();

cout & lt& ltsal:“& lt& ltsal & lt& ltendl

}

};

Clase de estudiante: datos públicos virtuales

{

Protegido:

Id. de cadena;

Público:

Void print()

{

CData::print();

cout & lt& lt" ID:" & lt ;& ltid & lt& ltendl

}

};

Clase de posgrado: estudiantes de escuelas públicas

{

Protegido:

Cadena dn;

Público:

void print()

{

c estudiante::print() ;

cout & lt& ltDN:“& lt;& ltdn & lt& ltendl

}

};

Maestros públicos, público estudiantes de posgrado

{

Público:

Void print()

{//Para no duplicar el nombre de salida, solo el Aquí se llama a la impresión de los estudiantes de posgrado, y luego los salarios de los maestros se generan por separado.

CPostgrad::print();

cout & lt& ltsal: "& lt& ltsal & lt& ltendl

}

};