question de cour pour un newbies

question de cour pour un newbies - C++ - Programmation

Marsh Posté le 20-01-2003 à 13:17:20    

Salut
 
Voici l'exemple de creationd de classe du cour :
class String{
public:
String();
String(char*);
~String()
void Add(char*);
....
//données membres:
char* string;
unsigned int length
....
};
 
//2eme construncteur:
String::String(char* s)
{length=strlen(s)...
....
...}

 
Si je comprend bien , les données menbres sont PRIVATE mais le constructeur lui y accede quand meme, car il les initialises????

Reply

Marsh Posté le 20-01-2003 à 13:17:20   

Reply

Marsh Posté le 20-01-2003 à 13:36:02    

les données membres peuvent être accédées par toutes les méthodes de la classe, dont fait partie le constructeur.
le fait qu'elles soient private ne les masque qu'aux yeux des autres classes.

Reply

Marsh Posté le 20-01-2003 à 13:57:00    

ok , en fait c'est genre de variables globales pour la classe..
 
Encore une petite alors :)
j'ai une fonction membre :donc voici l'implemntation,sachant que heure est une donnée membre:
void Temps::ajusterTemps(int h,int,m,int s){
heure=(h>=0&&h<=24)?h:0;
..
...
}

Je connais l'operateur ternaire qui permet de remplacer un if totu simple..mais la je comprend ,quelle valeur va prendre heure, si vaut 10 par exemple????

Reply

Marsh Posté le 20-01-2003 à 14:02:49    

Code :
  1. void Temps::ajusterTemps(int h,int,m,int s){
  2. heure=(h>=0&&h<=24)?h:0;
  3. ..
  4. ...
  5. }

 
Equivaut à  
si heure est compris entre 0 et 24 alors heure=h sinon=0
 
PS. en théorie si heure=0 ou =24, c'est la même chose donc
heure=(h>=0&&h<24)?h:0

Reply

Marsh Posté le 20-01-2003 à 14:05:30    

si h vaut 10, alors heure vaudra 10 !
 
ta fonction signifie que :
 
si h est compris entre 0 et 24, alors donne à heure la valeur de h, sinon heure = 0
 
par contre, il te manque une parenthèse à la fin de ta ligne
 
et l'opérateur ternaire, c laid et illisible :kaola:
 
à éviter si possible !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 20-01-2003 à 14:06:13    

merci bien
 j'aurais du trovuer tout seul pour l'attribution du heure... :sweat:  

Reply

Marsh Posté le 20-01-2003 à 15:14:04    

ben ouais... :sarcastic:
 
encore un bel exemple de code rendu illisible par l'opérateur ternaire... quelle mouche a donc piqué K&R d'implémenter cette atrocité ??
 
si tu avais eu des if... else if ... à la place, tout aurait été bien plus clair !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 23-01-2003 à 03:42:52    

Une bonne mouche.
Ça permet d'éviter de fractionner une formule sur plusieurs lignes, en créant des variables temporaires qu'il faut nommer.
 
Bon, bien sûr, il est mal utilisé ici...

Code :
  1. if(h<0 || h>=24)
  2. heure=0;


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 23-01-2003 à 03:48:13    

Harkonnen a écrit :

ben ouais... :sarcastic:
 
encore un bel exemple de code rendu illisible par l'opérateur ternaire... quelle mouche a donc piqué K&R d'implémenter cette atrocité ??
 
si tu avais eu des if... else if ... à la place, tout aurait été bien plus clair !


K&R l'on implementé afin d'ecrire des macros avec des tests en cascade je pense.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 23-01-2003 à 08:51:14    

Musaran a dans sa signature :

Pourquoi as tu mis tout ton code en commentaire ? Ca compile plus vite comme ça.


[:rofl] :lol:
 
Sinon, pour l'opérateur ternaire, je veux bien admettre qu'il ait certains avantages, mais les gens ont tendance à le mettre à toutes les sauces. Résultat : dans 98% des cas ou il est utilisé, on pourrait s'en passer.
 


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed