Héritage simple en C++ - Applications résolues


1) Exemplifiez l’hierarchie de clasee (redeclaratin de dates de membre et surcharge des fonctions membre des classes de baze dans la classe derivee).
#include <iostream>
using namespace std;
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include <fstream>

class nombre
{
	protected:
		int n;
	public:
		void afficher(char* s)
		{
			cout<<"Nombre "<<s<<" est: "<<n<<endl;
		}
	int retur()
	{
		return n;
	}
};
class nombre_d1: public nombre
{
	public:
		void lire(char *s)
		{
			cout<<"Lire le nombre "<<s<<endl;
			cout<<"\tn=";
			cin>>n;
		}
 
	void addition(nombre_d1 a, nombre b)
	{
		n=a.n+b.retur();
	}
};
class nombre_d2: public nombre_d1
{
//introduire une date privee et on demande y retenir le caree du nombre precedent
int n;
public:
	nombre_d2 operator*()
	{
		nombre_d2 a;
		a.n=(nombre::n+2);
		return a;
	} 
void afficher()
	{
		cout<<"Le resultat est (on a ajoute 2 au resultat): "<<n<<endl;
	}
};
void main()
{
	nombre_d2 a,b,c;
	a.lire("a");
	b.lire("b");
	c.addition(a,b);
	c.nombre_d1::afficher("a+b");
	nombre_d2 d;
	d=*c;
	d.afficher();
 
   int k;
   cin>>k;
}

2) Exemplification constructeurs dans hierarchies de classe.
#include <iostream>
using namespace std;
 
class nombre
{
	protected:
		int n;
	public:
		nombre(int a=5)
		{
			n=a;
			cout<<"Costructeur de la classe de base.\n";
		}
	int& retur()
	{
		return n;
	}
	friend ostream& operator<<(ostream& out,nombre a)
	{
		out<<"Le nombre est: "<<a.n<<endl;
		return out;
	}
};
 
class nombre_d: public nombre
{
	public:
	nombre_d(int a=10):nombre(a) /*:nombre(a) pas obligatoire d’ecrire, juste quand on 
					a plusieurs constructeurs dans la classe de base */
					{
		cout<<"Constructeur de la classe derivee.\n";
		n=a;
	}
 
	/*
- pour un objet dans une classe de base on peut atribuir un objet d’une classe d’y derivee
- pour un objet dans une classe de base on ne peut pas atribuir un objet d’une classe de base, 
car une classe derivee est une completation d’une classe de base 
(Mais on peut doter la classe derivee avec une methode obtenue par surcharge d’operateur =.
Mais les dates qui appartient exclusive a la classe derivee, auront des valeurs arbitraires.)
	*/
 
	void operator=(nombre & x)
	{
		n=x.retur();
	}
};
void main()
{
	nombre a;
	cout<<a;
	nombre_d b;
	cout<<b;
	b=a; //ce n’est pas possible sans surcharge d’operateur =
	cout<<b;
	
	int k;
    	cin>>k;
}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.