Red de conocimiento informático - Conocimiento sistemático - Clases derivadas y preguntas sobre programación de funciones virtuales

Clases derivadas y preguntas sobre programación de funciones virtuales

#include

#include

#include

#include

#include

#include

usando el espacio de nombres std;

forma de clase

{

protected: double log;//Longitud del lado inline void show () {cout<<"La longitud del lado (diámetro) es:"<

public : área doble virtual ()=0; forma () {log=0;} forma (doble d) {log=d;}

};

clase bola:forma pública //Derivación de la bola

{

público: bola ():forma () {} bola (doble d):forma (d) {} ​​​​doble área (); volumen ( );

};

clase cuadrado:forma pública//derivación de bola

{

público: cuadrado (): forma ( ) {} cuadrado (doble d): forma (d) {} ​​doble área (); doble volumen ();

};

forma **rand_arry(); );

#define PAI 3.14

int main ()

{ forma **s=rand_arry();

para ( int i=0 ;i<5;i++) //Usa RTT para procesar la clase recibida

if (typeid (*s[i])==typeid (ball)) cout<<"Área de ​​circulo:" <area()<área()<

retorno 0;

}

doble bola::área ()

{ show (); return PAI*pow((log/2),2);

}

doble bola::volumen ()

{ show (); return (4.0/3)*PAI*pow((log/2),3);

}

forma ** rand_arry()

{ forma **s=nueva forma*[5]; srand (tiempo(0)); for (int i=0;i<5;i++) { if (rand () %2) s[i] =nueva bola(rand ()%6+1);

s[i]=nuevo cuadrado(rand ()%6+1 } return s;

}

doble cuadrado::área ()

{ show (); return pow(log,2);

}

doble cuadrado::volumen ()

{ show ();

devuelve pow(log,3);

}