Bonjour tout le monde,

Je débute tout juste en programmation C++, et dans mes exercices, j’ai un code à analyser, mais je ne le comprends pas bien très bien… C’est pour cela que je viens vous demander de l’aide !
Il s’agit d’un code qui réalise le produit d’une matrice avec un vecteur (??).

On nous donne la définition des classes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define TAILLE 3
class Vecteur {
  private:
    double vect[TAILLE];
  public:
     Vecteur(double t[TAILLE]) {
	for (i = 0; i < TAILLE; i++)
	    vect[i] = t[i];
     }
} 
 
class Matrice {
  private:
    double mat[TAILLE][TAILLE];
  public:
     Matrice(double t[TAILLE][TAILLE]) {
	int i, j;
	for (i = 0; i < TAILLE; i++)
	    for (j = 0; j < TAILLE; j++)
		 mat[i][j] = t[i][j];
     }
}
Déjà, je ne comprends pas pourquoi les constructeurs sont implémentés dans la classe… c’est la première fois que je vois ça… Pourquoi pas dans le fichier .cpp comme d’habitude ?
C’est une question de rapidité ou de sécurité ? Mais pourquoi alors ?

Puis dans l’exercice, on nous pose deux questions (je vous mets mes réponses) :

1) Où déclarer la fonction Vecteur produit(Matrice mat, Vecteur vect) faisant le produit de mat par vect ? Comment faire pour que la fonction accède aux données membres des objets mat et vect ?
Je pense qu’ici il faut parler des liens d’amitiés ? Il faudrait donc déclarer la fonction produit dans la classe matrice par : friend Vecteur produit(Matrice mat, Vecteur vect); ?


2)On souhaite implémenter une fonction Vecteur produit(Vecteur vect) dans la classe matrice. Comment faire pour que la fonction puisse accéder aux données membres de l’objet
vect ?
De la même manière j’aurai dit de déclarer la fonction produit dans la classe matrice par : friend Vecteur produit(Vecteur vect) ;


D’après vous est ce que sont les bonnes réponses ? Je dois vous avouer que je n’ai pas très bien compris l’amitié en POO…

Je vous remercie par avance de votre aide,
A bientôt.