Bonjour à tous,
Je débute en c++ et je voudrais réaliser un classe de matrice.On m'a donné le .h et on m'a demandé de réaliser un .cc afin de définir tout d'abord une classe de vecteurs puis la classe de matrice proprement dite.
Voici le matrice.h:
class Vecteur {
private :
unsigned int n ; // Ta i l l e du v e c t e ur
double* p ;//création de p par allocation dynamique
public :
Vecteur ( int _n ) : n ( _n ) , p (new double [ _n ] )
{
for ( int i=0; i<n ; ++i )
p [ i ] = 0 ;//initialisation à zero
}
Vecteur ( const Vecteur&);
Vecteur& operator=(const Vecteur&);//assignation
double& operator ( ) ( int i ) {return p [ i ] ; }
double operator ( ) ( int i ) const {return p [ i ] ; }//donne l'élément de la i ème ligne
unsigned int size ( ) const {return n ; }
~Vecteur ( ) { delete [ ] p ; } // Un d e s t ruc t eur , rend l a mémoire
// dynamiquement a l l o u é par l e
// c ons t r u c t e u r quand l e Vecteur
// e s t d é t r u i t .
} ;
extern Vecteur operator+(const Vecteur&, const Vecteur&);//additionne deux vecteurs
extern Vecteur operator-(const Vecteur&, const Vecteur&);//soustrait deux vecteurs
extern Vecteur operator *(double , const Vecteur&);//multiplie deux vecteurs par une constante
inline Vecteur operator *( const Vecteur& x , double alpha )//?
{
return alpha*x ;
}
class Matrice {
private :
unsigned int nx ;// Nombre de lignes (1er paramètre)
unsigned int ny ;// Nombre de colonnes (2ème paramètre)
double* p ;
public :
Matrice (unsigned int _nx , unsigned int _ny ) ;//défini la taille de la matrice
Matrice ( const Matrice& a ) ;
Matrice& operator=(const Matrice&);//assignation
double& operator ( ) ( int i , int j ) {return p [ nx*i+j ] ; }
double operator ( ) ( int i , int j ) const {return p [ nx*i+j ] ; }//retour l'élément (i,j)
unsigned int nb_lines ( ) const {return nx ; }
unsigned int nb_columns ( ) const {return ny ; }
~Matrice ( ) ;
} ;
extern Matrice operator+(const Matrice&, const Matrice&);
extern Matrice operator-(const Matrice&, const Matrice&);
extern Matrice operator *(double , const Matrice&);
inline Matrice operator *( const Matrice& A , double alpha )
{
return alpha*A ;
}
extern Matrice operator *( const Matrice&, const Matrice&);
extern Vecteur operator *( const Matrice&, const Vecteur&);
J'ai plusieurs questions:
1) Que signifie cette ligne de code "Vecteur ( int _n ) : n ( _n ) , p (new double [ _n ] )"
Je ne comprend pas l'underscore avant le n
2)Je ne vois pas comment définir les opérateurs suivants:
Vecteur ( const Vecteur&);
je ne vois pas à quoi cela peu servir
Vecteur& operator=(const Vecteur&);//assignation
Je n'arrive pas à définir l'assignation pour un vecteur de taille n quelconque