Bonjour!,
J'aurais besoin d'un tout petit �clairsissement...

imaginons :
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
23
24
25
26
27
28
29
 
class String{
 private: char* value;
 public:
  ...
  char* value(){return value;};
  char* toupper(){
    char tempo[strlen(value)+1]={'\0'};
    for(int i=0;i<strlen(value);t++)
      tempo[i]=toupper(value[i]);
    return tempo;
  };
};
 
int main(void){
 String s;
 char *p;
 s = "une valeur";
 s = s.toupper(); //Reaffectation d'une variable locale ?
 p = s.toupper();
 
  ...
  ...
  ...
 
 *p=0; //Dangereux ?
 
 return EXIT_SUCCESS;
}

Le but de m�thodes telle que toupper est essentiellement de r�utiliser imm�diatement la valeur de retour pour une assignation.

Cependant il se pourait que du mauvais code conduise a l'example ou apres un certain temp un pointeur p pointe toujours sur la valeur de retour...

Ma question est :

En imaginant que l'operateur = ait �t� surcharg� de fa�on a copier le contenu de la valeur re�ue dans value:

- Est ce que r�affecter la variable locale tempo est dangereux du fait qu'elle ne soit pas sur le heap ?

- Idealement vaudrait-il mieu stocker tempo en variable membre de la classe String et l'utiliser pour tout une s�rie d'op�rations (qui ne modifient pas la valeur pass�e) comme toupper, ceci de fa�on a toujour etre certain de retourner un emplacement m�moire "sur" ?

- Ceci est-il g�r� par les compilateur ou les environements r�cents ?
- Enfin ceci est-il bon pour la portabilit� (syst�mes d'exploitations pouvant avoir un mauvais management de la m�moire en g�n�ral par example) ?


Voila, c'est une qestion toute bete et je voudrais etre certain de ne pas faire de betises.