"Alain Naigeon" writes:Ah...? Un jour j'ai fait une classe de hashtable. Le constructeur
recevait en argument une fonction de hachage, ayant une
valeur par défaut, c'est à dire une fonction définie dans la
classe. Son type était évidemment static, en plus cela
permettait de passer d'autres fonctions non membres.
Quand tu dis que le constructeur recevait une fonction de hachage,
tu parles d'un pointeur vers fonction ?
Un objet foncteur
"Alain Naigeon" <anaigeon@free.fr> writes:
Ah...? Un jour j'ai fait une classe de hashtable. Le constructeur
recevait en argument une fonction de hachage, ayant une
valeur par défaut, c'est à dire une fonction définie dans la
classe. Son type était évidemment static, en plus cela
permettait de passer d'autres fonctions non membres.
Quand tu dis que le constructeur recevait une fonction de hachage,
tu parles d'un pointeur vers fonction ?
Un objet foncteur
"Alain Naigeon" writes:Ah...? Un jour j'ai fait une classe de hashtable. Le constructeur
recevait en argument une fonction de hachage, ayant une
valeur par défaut, c'est à dire une fonction définie dans la
classe. Son type était évidemment static, en plus cela
permettait de passer d'autres fonctions non membres.
Quand tu dis que le constructeur recevait une fonction de hachage,
tu parles d'un pointeur vers fonction ?
Un objet foncteur
"Alain Naigeon" writes:
| "Gabriel Dos Reis" a écrit dans le
message
| news:
|
| > Conceptuellement, la différence entre une fonction membre non-statique
| > et une fonction membre statique n'a d'intérêt que pour les fonctions
| > virtuelles.
|
| Ah...?
POui.
| Un jour j'ai fait une classe de hashtable. Le constructeur
| recevait en argument une fonction de hachage, ayant une
| valeur par défaut, c'est à dire une fonction définie dans la
| classe. Son type était évidemment static, en plus cela
| permettait de passer d'autres fonctions non membres.
Là on reste toujours de l'ordre du syntaxique :-)
-- Gaby
"Alain Naigeon" <anaigeon@free.fr> writes:
| "Gabriel Dos Reis" <gdr@integrable-solutions.net> a écrit dans le
message
| news: m3ekpbm0nj.fsf@uniton.integrable-solutions.net...
|
| > Conceptuellement, la différence entre une fonction membre non-statique
| > et une fonction membre statique n'a d'intérêt que pour les fonctions
| > virtuelles.
|
| Ah...?
POui.
| Un jour j'ai fait une classe de hashtable. Le constructeur
| recevait en argument une fonction de hachage, ayant une
| valeur par défaut, c'est à dire une fonction définie dans la
| classe. Son type était évidemment static, en plus cela
| permettait de passer d'autres fonctions non membres.
Là on reste toujours de l'ordre du syntaxique :-)
-- Gaby
"Alain Naigeon" writes:
| "Gabriel Dos Reis" a écrit dans le
message
| news:
|
| > Conceptuellement, la différence entre une fonction membre non-statique
| > et une fonction membre statique n'a d'intérêt que pour les fonctions
| > virtuelles.
|
| Ah...?
POui.
| Un jour j'ai fait une classe de hashtable. Le constructeur
| recevait en argument une fonction de hachage, ayant une
| valeur par défaut, c'est à dire une fonction définie dans la
| classe. Son type était évidemment static, en plus cela
| permettait de passer d'autres fonctions non membres.
Là on reste toujours de l'ordre du syntaxique :-)
-- Gaby
Et si l'objet n'existe pas, comment appeler cette fonction
Et si l'objet n'existe pas, comment appeler cette fonction
Et si l'objet n'existe pas, comment appeler cette fonction
giova wrote:alors la il faut que quelqu'un me corrige car je risque de dire une
connerie.
qui dit statique dit appartient a la classe et non a l'objet. cad que
sitot la classe défini la methode statique se voit alloué son
emplacement mémoire meme si aucun objet n'a été créé. ca veut aussi dire
que quelque soit le nombre d'objet la fonction statique ne sera
"allouée" qu'une seule fois. Donc gain de place.
En fait, penses tu que pour une méthode non static le code de la méthode
membre sera dupliqué et existera pour chaque objet ?
Si c'est le cas c'est faux. Une méthode membre non static et une méthode
static se distinguent par une chose : l'une connait le pointeur this de la
classe, l'autre non. Dans les deux cas, le code de la fonction n'est
présent qu'une fois dans l'executable, et un appel de fonction normal se
fait. Mais dans le cas d'une fonction non statique, il y a une notion
d'appartenance à une instance de la classe donnée par this, qui fait que
l'on peut acceder à des variables dépendantes de l'instance en cours. (tout
ceci n'est valable que pour les méthode non inline, dans le cas contraire
il n'y a même pas présence du code dans l'executable...).
Une méthode static ne connaissant pas this, elle ne peut pas acceder à des
membres dépendant d'une instance de la classe, donc elle n'a accès à aucun
membre non static.
giova wrote:
alors la il faut que quelqu'un me corrige car je risque de dire une
connerie.
qui dit statique dit appartient a la classe et non a l'objet. cad que
sitot la classe défini la methode statique se voit alloué son
emplacement mémoire meme si aucun objet n'a été créé. ca veut aussi dire
que quelque soit le nombre d'objet la fonction statique ne sera
"allouée" qu'une seule fois. Donc gain de place.
En fait, penses tu que pour une méthode non static le code de la méthode
membre sera dupliqué et existera pour chaque objet ?
Si c'est le cas c'est faux. Une méthode membre non static et une méthode
static se distinguent par une chose : l'une connait le pointeur this de la
classe, l'autre non. Dans les deux cas, le code de la fonction n'est
présent qu'une fois dans l'executable, et un appel de fonction normal se
fait. Mais dans le cas d'une fonction non statique, il y a une notion
d'appartenance à une instance de la classe donnée par this, qui fait que
l'on peut acceder à des variables dépendantes de l'instance en cours. (tout
ceci n'est valable que pour les méthode non inline, dans le cas contraire
il n'y a même pas présence du code dans l'executable...).
Une méthode static ne connaissant pas this, elle ne peut pas acceder à des
membres dépendant d'une instance de la classe, donc elle n'a accès à aucun
membre non static.
giova wrote:alors la il faut que quelqu'un me corrige car je risque de dire une
connerie.
qui dit statique dit appartient a la classe et non a l'objet. cad que
sitot la classe défini la methode statique se voit alloué son
emplacement mémoire meme si aucun objet n'a été créé. ca veut aussi dire
que quelque soit le nombre d'objet la fonction statique ne sera
"allouée" qu'une seule fois. Donc gain de place.
En fait, penses tu que pour une méthode non static le code de la méthode
membre sera dupliqué et existera pour chaque objet ?
Si c'est le cas c'est faux. Une méthode membre non static et une méthode
static se distinguent par une chose : l'une connait le pointeur this de la
classe, l'autre non. Dans les deux cas, le code de la fonction n'est
présent qu'une fois dans l'executable, et un appel de fonction normal se
fait. Mais dans le cas d'une fonction non statique, il y a une notion
d'appartenance à une instance de la classe donnée par this, qui fait que
l'on peut acceder à des variables dépendantes de l'instance en cours. (tout
ceci n'est valable que pour les méthode non inline, dans le cas contraire
il n'y a même pas présence du code dans l'executable...).
Une méthode static ne connaissant pas this, elle ne peut pas acceder à des
membres dépendant d'une instance de la classe, donc elle n'a accès à aucun
membre non static.