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
Jean-Marc Bourguet
No_Name writes:
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la definir avec class. Si je ne m'abuse pas, la seule difference, c'est l'accessibilite par defaut (private pour class, public pour struct).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
No_Name <no_mail@no_mail.com> writes:
Dans un programme en C++, puis-je utiliser une sctructure (définie par
struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la
definir avec class. Si je ne m'abuse pas, la seule difference, c'est
l'accessibilite par defaut (private pour class, public pour struct).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la definir avec class. Si je ne m'abuse pas, la seule difference, c'est l'accessibilite par defaut (private pour class, public pour struct).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
No_Name
Jean-Marc Bourguet avait prétendu :
No_Name writes:
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la definir avec class. Si je ne m'abuse pas, la seule difference, c'est l'accessibilite par defaut (private pour class, public pour struct).
A+
Merci.
Jean-Marc Bourguet avait prétendu :
No_Name <no_mail@no_mail.com> writes:
Dans un programme en C++, puis-je utiliser une sctructure (définie par
struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la
definir avec class. Si je ne m'abuse pas, la seule difference, c'est
l'accessibilite par defaut (private pour class, public pour struct).
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete,
Oui. Definir une classe avec struct n'est pas tres different que de la definir avec class. Si je ne m'abuse pas, la seule difference, c'est l'accessibilite par defaut (private pour class, public pour struct).
A+
Merci.
pjb
No_Name writes:
Bonjour,
Une question que je me pose :
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete, ou faut-il impérativement passer par malloc/free ?
En C++, il n'y a pas de différence fondamentale entre class et struct. (PCQJS, la différence porte seulement sur la visibilité par défaut des membres).
Les deux déclarations suivantes sont équivalentes :
struct Example { int counter; Example(int c):counter(c){}; };
class Example { public: int counter; Example(int c):counter(c){}; };
Dans un programme en C++, puis-je utiliser une sctructure (définie par
struct) avec new/delete, ou faut-il impérativement passer par
malloc/free ?
En C++, il n'y a pas de différence fondamentale entre class et struct.
(PCQJS, la différence porte seulement sur la visibilité par défaut des membres).
Les deux déclarations suivantes sont équivalentes :
struct Example {
int counter;
Example(int c):counter(c){};
};
class Example {
public:
int counter;
Example(int c):counter(c){};
};
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete, ou faut-il impérativement passer par malloc/free ?
En C++, il n'y a pas de différence fondamentale entre class et struct. (PCQJS, la différence porte seulement sur la visibilité par défaut des membres).
Les deux déclarations suivantes sont équivalentes :
struct Example { int counter; Example(int c):counter(c){}; };
class Example { public: int counter; Example(int c):counter(c){}; };
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete, ou faut-il impérativement passer par malloc/free ?
Comme d'autres ont déjà dit, il n'y a pas vraiment des « struct » en C++ ; que tu te sers du mot clé struct ou du mot clé class, tu définis une classe. Mais aussi : les operateurs new et delete marche pour tout type, sans exception. Tu peux bien faire « new int », par exemple. En général, il n'y a pas de raison d'utiliser malloc/free dans du C++ pûr.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Mar 12, 11:19 am, No_Name <no_mail@no_mail.com> wrote:
Une question que je me pose :
Dans un programme en C++, puis-je utiliser une sctructure
(définie par struct) avec new/delete, ou faut-il
impérativement passer par malloc/free ?
Comme d'autres ont déjà dit, il n'y a pas vraiment des
« struct » en C++ ; que tu te sers du mot clé struct ou du
mot clé class, tu définis une classe. Mais aussi : les
operateurs new et delete marche pour tout type, sans exception.
Tu peux bien faire « new int », par exemple. En général, il
n'y a pas de raison d'utiliser malloc/free dans du C++ pûr.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dans un programme en C++, puis-je utiliser une sctructure (définie par struct) avec new/delete, ou faut-il impérativement passer par malloc/free ?
Comme d'autres ont déjà dit, il n'y a pas vraiment des « struct » en C++ ; que tu te sers du mot clé struct ou du mot clé class, tu définis une classe. Mais aussi : les operateurs new et delete marche pour tout type, sans exception. Tu peux bien faire « new int », par exemple. En général, il n'y a pas de raison d'utiliser malloc/free dans du C++ pûr.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
que tu te sers du mot clé struct ou du mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze
<james.kanze@gmail.com>:
que tu te sers du mot clé struct ou du
mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que
des membres publics. Mais ce n'est effectivement qu'une convention
personnelle, pas un truc du langage lui-même.
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
que tu te sers du mot clé struct ou du mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
Alexandre BACQUART
Fabien LE LEZ wrote:
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
que tu te sers du mot clé struct ou du mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
C'est amusant finalement ce petit détail de C++ : deux mots clés pour faire sensiblement la même chose (alors qu'en revanche, certains mots clé ont plusieurs usages, comme 'static'). En fait, j'ai toujours été curieux des raisons pour lesquelles 'class' a été introduit, alors que rien ne semble le justifier dans la mécanique du langage duquel C++ hérite déjà. Ce n'est quand-même pas simplement pour introduire une bonne habitude consistant à protéger tous les membres par défaut ? Cela m'interpelle...
Typiquement, à la longue, j'ai pris l'habitude de n'utiliser struct que pour des structures bas-niveau, comme une façon d'auto-documenter qu'il s'agit plutôt d'un agrégat. Je l'utilise également souvent pour les functors.
-- Alex
Fabien LE LEZ wrote:
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze
<james.kanze@gmail.com>:
que tu te sers du mot clé struct ou du
mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que
des membres publics. Mais ce n'est effectivement qu'une convention
personnelle, pas un truc du langage lui-même.
C'est amusant finalement ce petit détail de C++ : deux mots clés pour
faire sensiblement la même chose (alors qu'en revanche, certains mots
clé ont plusieurs usages, comme 'static'). En fait, j'ai toujours été
curieux des raisons pour lesquelles 'class' a été introduit, alors que
rien ne semble le justifier dans la mécanique du langage duquel C++
hérite déjà. Ce n'est quand-même pas simplement pour introduire une
bonne habitude consistant à protéger tous les membres par défaut ? Cela
m'interpelle...
Typiquement, à la longue, j'ai pris l'habitude de n'utiliser struct que
pour des structures bas-niveau, comme une façon d'auto-documenter qu'il
s'agit plutôt d'un agrégat. Je l'utilise également souvent pour les
functors.
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
que tu te sers du mot clé struct ou du mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
C'est amusant finalement ce petit détail de C++ : deux mots clés pour faire sensiblement la même chose (alors qu'en revanche, certains mots clé ont plusieurs usages, comme 'static'). En fait, j'ai toujours été curieux des raisons pour lesquelles 'class' a été introduit, alors que rien ne semble le justifier dans la mécanique du langage duquel C++ hérite déjà. Ce n'est quand-même pas simplement pour introduire une bonne habitude consistant à protéger tous les membres par défaut ? Cela m'interpelle...
Typiquement, à la longue, j'ai pris l'habitude de n'utiliser struct que pour des structures bas-niveau, comme une façon d'auto-documenter qu'il s'agit plutôt d'un agrégat. Je l'utilise également souvent pour les functors.
-- Alex
James Kanze
On Mar 13, 6:53 pm, Fabien LE LEZ wrote:
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
>que tu te sers du mot clé struct ou du >mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
Tout à fait. Des variants de cette règle d'écriture sont assez répandus -- chez moi, par exemple, j'utilise struct quand les membres données sont public, class autrement (et je ne suis pas toujours cohérent quand il n'y a pas de membres données, que des fonctions ou des typedef publiques). Mais c'est toujours une règle d'écriture, non une règle du langage.
Note aussi que selon la norme, le mot clé union définit aussi une classe. Mais à l'encontre de struct et de class, c'est une classe bien différente des autres.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Mar 13, 6:53 pm, Fabien LE LEZ <grams...@gramster.com> wrote:
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze
<james.ka...@gmail.com>:
>que tu te sers du mot clé struct ou du
>mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y
a que des membres publics. Mais ce n'est effectivement qu'une
convention personnelle, pas un truc du langage lui-même.
Tout à fait. Des variants de cette règle d'écriture sont assez
répandus -- chez moi, par exemple, j'utilise struct quand les
membres données sont public, class autrement (et je ne suis pas
toujours cohérent quand il n'y a pas de membres données, que des
fonctions ou des typedef publiques). Mais c'est toujours une
règle d'écriture, non une règle du langage.
Note aussi que selon la norme, le mot clé union définit aussi
une classe. Mais à l'encontre de struct et de class, c'est une
classe bien différente des autres.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Fri, 13 Mar 2009 01:48:21 -0700 (PDT), James Kanze :
>que tu te sers du mot clé struct ou du >mot clé class, tu définis une classe.
Par convention, j'ai tendance à utiliser "struct" quand il n'y a que des membres publics. Mais ce n'est effectivement qu'une convention personnelle, pas un truc du langage lui-même.
Tout à fait. Des variants de cette règle d'écriture sont assez répandus -- chez moi, par exemple, j'utilise struct quand les membres données sont public, class autrement (et je ne suis pas toujours cohérent quand il n'y a pas de membres données, que des fonctions ou des typedef publiques). Mais c'est toujours une règle d'écriture, non une règle du langage.
Note aussi que selon la norme, le mot clé union définit aussi une classe. Mais à l'encontre de struct et de class, c'est une classe bien différente des autres.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ
On Fri, 13 Mar 2009 22:52:17 +0100, Alexandre BACQUART :
Ce n'est quand-même pas simplement pour introduire une bonne habitude consistant à protéger tous les membres par défaut ?
Il est fort possible que ce soit une des raisons. N'oublie pas qu'au départ, le C++ s'adressait à des programmeurs C.
Peut-être aussi que "class" sonnait plus "OO".
On Fri, 13 Mar 2009 22:52:17 +0100, Alexandre BACQUART
<tek512@free.DELETEME.fr>:
Ce n'est quand-même pas simplement pour introduire une
bonne habitude consistant à protéger tous les membres par défaut ?
Il est fort possible que ce soit une des raisons. N'oublie pas qu'au
départ, le C++ s'adressait à des programmeurs C.
On Sat, 14 Mar 2009 02:29:22 -0700 (PDT), James Kanze :
Note aussi que selon la norme, le mot clé union définit aussi une classe.
Yep. J'ai tendance à tout le temps l'oublier, celui-là. Je ne suis pas sûr de l'avoir déjà utilisé.
James Kanze
On Mar 14, 2:04 pm, Fabien LE LEZ wrote:
On Sat, 14 Mar 2009 02:29:22 -0700 (PDT), James Kanze :
>Note aussi que selon la norme, le mot clé union définit aussi >une classe.
Yep. J'ai tendance à tout le temps l'oublier, celui-là. Je ne suis pas sûr de l'avoir déjà utilisé.
C'est vrai qu'elles servent beaucoup moins en C++ qu'en C. Mais j'ai toujours : union MaximumAlignment { long l ; long long ll ; double d ; long double ld ; char* pc ; MaximumAlignment* ps ; void (* pf)() ; } ; avec ici et là, des :
union { unsigned char buffer[ sizeof( T ) ]; MaximumAlignment dummyForAlignment ; } ;
Et parfois quand je me sers de lex/flex.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Mar 14, 2:04 pm, Fabien LE LEZ <grams...@gramster.com> wrote:
On Sat, 14 Mar 2009 02:29:22 -0700 (PDT), James Kanze
<james.ka...@gmail.com>:
>Note aussi que selon la norme, le mot clé union définit aussi
>une classe.
Yep. J'ai tendance à tout le temps l'oublier, celui-là. Je ne
suis pas sûr de l'avoir déjà utilisé.
C'est vrai qu'elles servent beaucoup moins en C++ qu'en C. Mais
j'ai toujours :
union MaximumAlignment
{
long l ;
long long ll ;
double d ;
long double ld ;
char* pc ;
MaximumAlignment* ps ;
void (* pf)() ;
} ;
avec ici et là, des :
union
{
unsigned char buffer[ sizeof( T ) ];
MaximumAlignment dummyForAlignment ;
} ;
Et parfois quand je me sers de lex/flex.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Sat, 14 Mar 2009 02:29:22 -0700 (PDT), James Kanze :
>Note aussi que selon la norme, le mot clé union définit aussi >une classe.
Yep. J'ai tendance à tout le temps l'oublier, celui-là. Je ne suis pas sûr de l'avoir déjà utilisé.
C'est vrai qu'elles servent beaucoup moins en C++ qu'en C. Mais j'ai toujours : union MaximumAlignment { long l ; long long ll ; double d ; long double ld ; char* pc ; MaximumAlignment* ps ; void (* pf)() ; } ; avec ici et là, des :
union { unsigned char buffer[ sizeof( T ) ]; MaximumAlignment dummyForAlignment ; } ;
Et parfois quand je me sers de lex/flex.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34