// chapitre 4 chaine conversion.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h"

#include <string.h>

class Chaine
{
private:
	char*buffer;
	int t_buf;
	int longueur;
public:
	// un constructeur par défaut
	Chaine()
	{
		t_buf=100;
		buffer=new char[t_buf];
		longueur=0;
	}
	
	Chaine (int t_buf)
	{
		this->t_buf=t_buf;	
		buffer=new char[t_buf];
		longueur=0;
	}

	Chaine(char*s)
	{
		t_buf=strlen(s)+1;
		buffer=new char[t_buf];
		longueur=strlen(s);
		strcpy(buffer,s);
	}		

	Chaine(char c)
	{
		t_buf=1;
		longueur=1;
		buffer=new char[t_buf];
		buffer[0]=c;
	}

	void afficher()
	{
		for(int i=0; i<longueur; i++)
			printf("%c",buffer[i]);
		printf("\n");
	}
} ;

int main(int argc, char* argv[])
{
	// Ecriture 1
	// Conversion par emploi explicite de constructeur
	Chaine x;
	x=Chaine("bonjour");	// conversion
	x.afficher();

	// Ecriture 2
	// Transtypage (cast) par coercition
	Chaine y=(char*) "bonjour"; // conversion (cast)
	y.afficher();

	// Ecriture 3
	// Transtypage (cast), approche C++
	Chaine z=char('A');		// conversion (cast)
	z.afficher();
	
	return 0;
}
