Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur
chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Bourez
La première solution
"Guillaume Gourdin" wrote in message news:bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
La première solution
"Guillaume Gourdin" <toto@toto.com> wrote in message
news:bdrj7r$1ktv$1@news6.isdnet.net...
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur
chacune des variables membre de la struct ou bien est-ce qu'un brutal
memcpy
"Guillaume Gourdin" wrote in message news:bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Le Bren Alexis
"Guillaume Gourdin" a écrit dans le message de news:bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Salut,
Ca appelle bien l'operateur = sur chacun des membres, mais il faut faire attention aux pointeurs car si tu as un pointeur de structure dans ta structure, le fait de faire = fera que des deux structures pointeront vers la meme donnée membre (de type pointeur). Par contre , pas de problèmes pour les données de type int, char etc...
"Guillaume Gourdin" <toto@toto.com> a écrit dans le message de
news:bdrj7r$1ktv$1@news6.isdnet.net...
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur
chacune des variables membre de la struct ou bien est-ce qu'un brutal
memcpy
est effectué ?
Salut,
Ca appelle bien l'operateur = sur chacun des membres, mais il faut faire
attention aux pointeurs car si tu as un pointeur de structure dans ta
structure, le fait de faire = fera que des deux structures pointeront vers
la meme donnée membre (de type pointeur). Par contre , pas de problèmes pour
les données de type int, char etc...
"Guillaume Gourdin" a écrit dans le message de news:bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Salut,
Ca appelle bien l'operateur = sur chacun des membres, mais il faut faire attention aux pointeurs car si tu as un pointeur de structure dans ta structure, le fait de faire = fera que des deux structures pointeront vers la meme donnée membre (de type pointeur). Par contre , pas de problèmes pour les données de type int, char etc...
Fonzy
"Guillaume Gourdin" a écrit dans le message de news: bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Par défaut, c'est bien une assignation membre à membre qui est réalisée. Par
contre, le problème se pose si les données membres peuvent avoir des tailles variables ie ne prennent pas la même étendue dans la mémoire: tableaux dynamiques, pointeurs sur objets (dont l'un aurait subi un dynamic cast et pas l'autre), etc. Dans ce dernier cas, il faut que tu surcharges l'opérateur = pour bien préciser le traitement que tu attends, sous peine d'avoir une erreur en run-time. Pour un tableau dynamique en donnée membre par exemple, il faudra faire un coup de delete[] puis un coup de new ...[] avec la taille de l'opérande.
Fonzy
"Guillaume Gourdin" <toto@toto.com> a écrit dans le message de news:
bdrj7r$1ktv$1@news6.isdnet.net...
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur
chacune des variables membre de la struct ou bien est-ce qu'un brutal
memcpy
est effectué ?
Par défaut, c'est bien une assignation membre à membre qui est réalisée. Par
contre, le problème se pose si les données membres peuvent avoir des tailles
variables ie ne prennent pas la même étendue dans la mémoire: tableaux
dynamiques, pointeurs sur objets (dont l'un aurait subi un dynamic cast et
pas l'autre), etc. Dans ce dernier cas, il faut que tu surcharges
l'opérateur = pour bien préciser le traitement que tu attends, sous peine
d'avoir une erreur en run-time. Pour un tableau dynamique en donnée membre
par exemple, il faudra faire un coup de delete[] puis un coup de new ...[]
avec la taille de l'opérande.
"Guillaume Gourdin" a écrit dans le message de news: bdrj7r$1ktv$
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Par défaut, c'est bien une assignation membre à membre qui est réalisée. Par
contre, le problème se pose si les données membres peuvent avoir des tailles variables ie ne prennent pas la même étendue dans la mémoire: tableaux dynamiques, pointeurs sur objets (dont l'un aurait subi un dynamic cast et pas l'autre), etc. Dans ce dernier cas, il faut que tu surcharges l'opérateur = pour bien préciser le traitement que tu attends, sous peine d'avoir une erreur en run-time. Pour un tableau dynamique en donnée membre par exemple, il faudra faire un coup de delete[] puis un coup de new ...[] avec la taille de l'opérande.
Fonzy
Fabien LE LEZ
On Tue, 1 Jul 2003 22:34:23 +0200, "Fonzy" wrote:
Par contre, le problème se pose si les données membres peuvent avoir des tailles variables ie ne prennent pas la même étendue dans la mémoire: tableaux dynamiques,
Pas de problème : vector, list et autres ont déjà un operateur = qui fait le boulot correctement.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Tue, 1 Jul 2003 22:34:23 +0200, "Fonzy" <fonzy_x98@yahoo.fr> wrote:
Par
contre, le problème se pose si les données membres peuvent avoir des tailles
variables ie ne prennent pas la même étendue dans la mémoire: tableaux
dynamiques,
Pas de problème : vector, list et autres ont déjà un operateur = qui
fait le boulot correctement.
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Par contre, le problème se pose si les données membres peuvent avoir des tailles variables ie ne prennent pas la même étendue dans la mémoire: tableaux dynamiques,
Pas de problème : vector, list et autres ont déjà un operateur = qui fait le boulot correctement.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Martinez Jerome
Guillaume Gourdin wrote:
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy est effectué ?
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat du C, et que maintenant il fallait utilisé les classes. Un struct et une classe sans actions possibles, en programmation objet sans interet donc. J'ai faux?
Guillaume Gourdin wrote:
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur
chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy
est effectué ?
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle
est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat
du C, et que maintenant il fallait utilisé les classes.
Un struct et une classe sans actions possibles, en programmation objet
sans interet donc.
J'ai faux?
Bonjour, est-ce que l'operateur = sur une struct appelle l'operateur = sur chacune des variables membre de la struct ou bien est-ce qu'un brutal memcpy est effectué ?
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat du C, et que maintenant il fallait utilisé les classes. Un struct et une classe sans actions possibles, en programmation objet sans interet donc. J'ai faux?
Arnaud Meurgues
Martinez Jerome wrote:
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat du C, et que maintenant il fallait utilisé les classes. Un struct et une classe sans actions possibles, en programmation objet sans interet donc. J'ai faux?
Oui. Une struct et une classe, c'est exactement la même chose. La seule différence est l'accès par défaut (private pour les classes et public pour les structs).
Par ailleurs, même en C++, il peut arriver de n'avoir besoin d'aucun comportement et de pouvoir/vouloir se contenter d'un struct. La programmation objet n'est pas un but en soi, mais un moyen. Si l'on a besoin de données sans comportement, pourquoi ne pas utiliser un struct.
En tout cas, une struct n'est pas une classe sans action possible. Il est parfaitement légal d'écrire : struct S { S() : value_(0) {} void action() { value_++; } private; int value_; };
par exemple.
Arnaud
Martinez Jerome wrote:
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle
est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat
du C, et que maintenant il fallait utilisé les classes.
Un struct et une classe sans actions possibles, en programmation objet
sans interet donc.
J'ai faux?
Oui. Une struct et une classe, c'est exactement la même chose. La seule
différence est l'accès par défaut (private pour les classes et public
pour les structs).
Par ailleurs, même en C++, il peut arriver de n'avoir besoin d'aucun
comportement et de pouvoir/vouloir se contenter d'un struct. La
programmation objet n'est pas un but en soi, mais un moyen. Si l'on a
besoin de données sans comportement, pourquoi ne pas utiliser un struct.
En tout cas, une struct n'est pas une classe sans action possible. Il
est parfaitement légal d'écrire :
struct S {
S() : value_(0) {}
void action() { value_++; }
private;
int value_;
};
Question a la con (mais vous commencez a avoir l'habitude :) ) : quelle est l'utilisté d'un struct en C++? je pensais que c'etait une reliquat du C, et que maintenant il fallait utilisé les classes. Un struct et une classe sans actions possibles, en programmation objet sans interet donc. J'ai faux?
Oui. Une struct et une classe, c'est exactement la même chose. La seule différence est l'accès par défaut (private pour les classes et public pour les structs).
Par ailleurs, même en C++, il peut arriver de n'avoir besoin d'aucun comportement et de pouvoir/vouloir se contenter d'un struct. La programmation objet n'est pas un but en soi, mais un moyen. Si l'on a besoin de données sans comportement, pourquoi ne pas utiliser un struct.
En tout cas, une struct n'est pas une classe sans action possible. Il est parfaitement légal d'écrire : struct S { S() : value_(0) {} void action() { value_++; } private; int value_; };
par exemple.
Arnaud
Fabien LE LEZ
On Wed, 02 Jul 2003 10:22:17 +0200, Martinez Jerome wrote:
quelle est l'utilisté d'un struct en C++?
Si par "struct", tu entends ce qu'on déclare par le mot-clef "struct", il s'agit d'une classe dont les membres et l'héritage sont publics par défaut. Si tu parles de structure (comme on en voit en C), ça n'existe effectivement pas en C++ -- sinon comme cas particulier de classe.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Si par "struct", tu entends ce qu'on déclare par le mot-clef "struct",
il s'agit d'une classe dont les membres et l'héritage sont publics par
défaut.
Si tu parles de structure (comme on en voit en C), ça n'existe
effectivement pas en C++ -- sinon comme cas particulier de classe.
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Wed, 02 Jul 2003 10:22:17 +0200, Martinez Jerome wrote:
quelle est l'utilisté d'un struct en C++?
Si par "struct", tu entends ce qu'on déclare par le mot-clef "struct", il s'agit d'une classe dont les membres et l'héritage sont publics par défaut. Si tu parles de structure (comme on en voit en C), ça n'existe effectivement pas en C++ -- sinon comme cas particulier de classe.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Gabriel Dos Reis
Fabien LE LEZ writes:
| Si tu parles de structure (comme on en voit en C), ça n'existe | effectivement pas en C++ -- sinon comme cas particulier de classe.
9/4
A /structure/ is a class defined with the class-key struct; its members and the base classes (clause 10) are public by default (clause 11).
C'est une définition que j'ai toujours trouvée sans grand intérêt.
-- Gaby
Fabien LE LEZ <gramster@gramster.com> writes:
| Si tu parles de structure (comme on en voit en C), ça n'existe
| effectivement pas en C++ -- sinon comme cas particulier de classe.
9/4
A /structure/ is a class defined with the class-key struct; its
members and the base classes (clause 10) are public by default
(clause 11).
C'est une définition que j'ai toujours trouvée sans grand intérêt.
| Si tu parles de structure (comme on en voit en C), ça n'existe | effectivement pas en C++ -- sinon comme cas particulier de classe.
9/4
A /structure/ is a class defined with the class-key struct; its members and the base classes (clause 10) are public by default (clause 11).
C'est une définition que j'ai toujours trouvée sans grand intérêt.
-- Gaby
Loïc Joly
Christophe de Vienne wrote:
struct peut très bien avoir des méthodes. La seule différence avec class est que les attributs et méthodes d'une structure sont par défaut en 'public', alors que ceux d'une classe en 'private'...
Ainsi que l'héritage par défaut...
-- Loïc
Christophe de Vienne wrote:
struct peut très bien avoir des méthodes. La seule différence avec class est
que les attributs et méthodes d'une structure sont par défaut en 'public',
alors que ceux d'une classe en 'private'...
struct peut très bien avoir des méthodes. La seule différence avec class est que les attributs et méthodes d'une structure sont par défaut en 'public', alors que ceux d'une classe en 'private'...