Classe chaine utilisée comme type. exemple de classe pour débutants

Contenu du snippet

C'etait un devoir que je devais faire. Il utilise le principe objet. Instanciation, constructeur et destructeur, surcharge d'operateurs.
Vous m'excuserez si il y a quelque chose qui bug... OU QUI MANQUE

Source / Exemple :


fichier Chaine.h : 
Code: 

class Chaine { 
private : 
   char * chaine; 

public : 
        Chaine();//constructeur par défaut 
        Chaine(char * pChaine);//constructeur parametre 
        Chaine(const Chaine & C); // constructeur par recopie 
        ~Chaine(); 
        Chaine& operator = (Const Chaine & C); //surcharge de l'operateur d'affectation 
        int operator == (Chaine C); //  surcharge de l'operateur de comparaison 
        char * ObtenirCaractere();//méthode d'acces à l'attribut caractere 
        void ModifierCaractere(char * pChaine); //méthode de modification du caractere 
        friend std::ostream& operator <<(std::ostream& os, const Chaine& C); //affichage 
}; 

fichier Chaine.cpp : 
Code: 
#include "Chaine.h" 
#include <iostream> 
#include <string.h> 

Chaine::Chaine(char * pChaine ="")    //constructeur parametre + par défaut 
{ 
        Chaine = new char[strlen(pChaine)+1]; 
        strcpy(Chaine, pChaine); 
} 

Chaine::Chaine(const Chaine & C)   // constructeur par recopie 
{ 
        Chaine = new char[strlen(C.chaine)+1]; 
        strcpy(chaine, C.chaine); 
} 

Chaine::~Chaine() 
{ 
        delete [] Chaine; 
} 

Chaine& Chaine::operator = (Const Chaine & C)    //surcharge de l'operateur d'affectation 
{ 
        char * temp = new char[strlen(C.Chaine)+1]; 
        strcpy(Chaine, C.ObtenirCaractere()); 
        delete [] Chaine; 
        Chaine = temp; 
        return *this; 
        //ancien code : (celui du cours) 
        //int longueur = strlen(C.ObtenirCaractere())+1; 
        //delete [] Chaine; 
        //Chaine = new char[longueur]; 
        //strcpy(Chaine, C.ObtenirCaractere()); 
        //return *this; 
} 

bool Chaine::operator == (Chaine C) //  surcharge de l'operateur de comparaison 
{ 
        return !strcmp(Chaine, C.obtenircaractere()); 
} 

char * Chaine::ObtenirCaractere() const//méthode d'acces à l'attribut caractere 
{ 
        return Chaine const; 
} 

void Chaine::ModifierCaractere(char * pChaine) //méthode de modification du caractere 
{ 
        delete [] Chaine; 
        Chaine = new char [strlen(pChaine)+1]; 
        strcpy(Chaine, pChaine); 
} 

std::ostream& operator <<(std::ostream& os, const Chaine& c) 
{ 
        return os << C.Chaine; 
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.