question de cour pour un newbies - C++ - Programmation
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.
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 onc 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????
Marsh Posté le 20-01-2003 à 14:02:49
Code :
|
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
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
à éviter si possible !
Marsh Posté le 20-01-2003 à 14:06:13
merci bien
j'aurais du trovuer tout seul pour l'attribution du heure...
Marsh Posté le 20-01-2003 à 15:14:04
ben ouais...
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 !
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 :
|
Marsh Posté le 23-01-2003 à 03:48:13
Harkonnen a écrit : ben ouais... |
K&R l'on implementé afin d'ecrire des macros avec des tests en cascade je pense.
A+,
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. |
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.
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????