Hmm, herencia estoy dando ahora, así que seguro que hay gente que te pueda responder mejor que yo en MV. De todas formas lo intentaré ^".
Lo del constructor no te entiendo; cuando tú dices:
class Circulo : public Figura
creo que lo que haces es otorgarle a Circulo lo público de Figura (creo que también puedes poner private Figura o protected, pero a lo mejor me lo estoy inventando).
Sobre lo segundo, creo que puedes pero sólo si en la clase de la que se hereda hay algún método (public) que permita acceder. Te pongo un ejemplo sencillo que tenía por ahí:
class base
{
private:
int i;
public:
base();
void set_i(int n);
int get_i();
};
class derived : public base
{
private:
int j;
public:
derived();
void set_j(int n);
int mul();
};
main()
{
derived ob;
ob.set_i(10);//Mete 'i' en la base
ob.set_j(4);//Mete 'j' en la derivada
cout << ob.mul();//Multiplica i por j
return 0;
}
No he puesto las implementaciones porque hubiera sido mucha tela xD, pero lo único que hace "set_i" (que es de base) es meter un entero en el miembro privado. De esta manera puedes acceder a los privados de la que se hereda.
Espero haberte aclarado algo XD
1Saludo!