Un certain nombre de questions on déjà été posé quant à la position du const
à adopter concernant des objets. Or, je viens de trouver dans un bout de
code ça :
const A* const InstanceA;
J'ai le sentiment qu'il y a un doublon : ais_je raison .?
le premier const s'applique au 'A', et le second au '*'. On aurait pu aussi écrire : A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
Merci...
Christophe de VIENNE
Zouplaz wrote:
Christophe de VIENNE - :
le premier const s'applique au 'A', et le second au '*'. On aurait pu aussi écrire : A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
petit exemple :
class A {};
int main() { A a; A const * const a1 = &a; A const * a2;
a2 = a1; // légal : a2 est une variable non const, // donc on peut l'affecter. Dans le cas présent // c'est l'objet pointé qui est constant et qu'on ne // peut pas modifier.
a1 = a2; // pas légal : a1 est constant, on ne peut l'affecter.
return 0; }
Est-ce que ça répond à ta question ?
A+
Christophe
Zouplaz wrote:
Christophe de VIENNE - cdevienne@alphacent.com :
le premier const s'applique au 'A', et le second au '*'.
On aurait pu aussi écrire :
A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
petit exemple :
class A {};
int main()
{
A a;
A const * const a1 = &a;
A const * a2;
a2 = a1; // légal : a2 est une variable non const,
// donc on peut l'affecter. Dans le cas présent
// c'est l'objet pointé qui est constant et qu'on ne
// peut pas modifier.
a1 = a2; // pas légal : a1 est constant, on ne peut l'affecter.
le premier const s'applique au 'A', et le second au '*'. On aurait pu aussi écrire : A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
petit exemple :
class A {};
int main() { A a; A const * const a1 = &a; A const * a2;
a2 = a1; // légal : a2 est une variable non const, // donc on peut l'affecter. Dans le cas présent // c'est l'objet pointé qui est constant et qu'on ne // peut pas modifier.
a1 = a2; // pas légal : a1 est constant, on ne peut l'affecter.
return 0; }
Est-ce que ça répond à ta question ?
A+
Christophe
Jean-Marc Molina
Bonjour,
Ça m'intéresse aussi car je n'ai jamais utilisé un double const, je vois pas quel effet ça peut produire ni ce que ça peut apporter... Le pointeur est const mais le second je vois pas ce qu'il fait... J'ai déjà vu ça plusieurs fois mais trop rarement.
JM
-- Europe > France > Lyon Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Bonjour,
Ça m'intéresse aussi car je n'ai jamais utilisé un double const, je vois pas
quel effet ça peut produire ni ce que ça peut apporter... Le pointeur est
const mais le second je vois pas ce qu'il fait... J'ai déjà vu ça plusieurs
fois mais trop rarement.
JM
--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Ça m'intéresse aussi car je n'ai jamais utilisé un double const, je vois pas quel effet ça peut produire ni ce que ça peut apporter... Le pointeur est const mais le second je vois pas ce qu'il fait... J'ai déjà vu ça plusieurs fois mais trop rarement.
JM
-- Europe > France > Lyon Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
darkman_spam
Zouplaz wrote in message news:...
Christophe de VIENNE - :
le premier const s'applique au 'A', et le second au '*'. On aurait pu aussi écrire :
A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
Un pointeur constant vers un `A´ constant.
Tu ne peux modifier ni le pointeur, càd vers quel objet il pointe, ni l'objet pointé, de type `A´ (enfin, de type `A const´).
--drkm
Zouplaz <pouet@pouet.com> wrote in message news:<Xns943FD50F126BEZoupla@213.228.0.136>...
Christophe de VIENNE - cdevienne@alphacent.com :
le premier const s'applique au 'A', et le second au '*'.
On aurait pu aussi écrire :
A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
Un pointeur constant vers un `A´ constant.
Tu ne peux modifier ni le pointeur, càd vers quel objet il pointe,
ni l'objet pointé, de type `A´ (enfin, de type `A const´).
le premier const s'applique au 'A', et le second au '*'. On aurait pu aussi écrire :
A const * const
J'ai lu la FAQ mais peux tu traduires l'effet produit ??
Un pointeur constant vers un `A´ constant.
Tu ne peux modifier ni le pointeur, càd vers quel objet il pointe, ni l'objet pointé, de type `A´ (enfin, de type `A const´).
--drkm
Jean-Marc Molina
C'est bien beau tout ça mais c'est quoi l'intérêt ? Un pointeur c'est dynamique, une constante c'est tout sauf dynamique. Donc je vois pas l'intérêt d'une variable const pointeur const...
Un exemple d'application, du concret quoi :)
JM
-- Europe > France > Lyon Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
C'est bien beau tout ça mais c'est quoi l'intérêt ?
Un pointeur c'est dynamique, une constante c'est tout sauf dynamique.
Donc je vois pas l'intérêt d'une variable const pointeur const...
Un exemple d'application, du concret quoi :)
JM
--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
C'est bien beau tout ça mais c'est quoi l'intérêt ? Un pointeur c'est dynamique, une constante c'est tout sauf dynamique. Donc je vois pas l'intérêt d'une variable const pointeur const...
Un exemple d'application, du concret quoi :)
JM
-- Europe > France > Lyon Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Fabien LE LEZ
On Fri, 28 Nov 2003 13:39:12 +0100, "Jean-Marc Molina" wrote:
Un pointeur c'est dynamique
Où as-tu été pêcher ça ?
int const CTE1= 10; int const CTE2= 12;
int const *ptr= &CTE1; ptr= &CTE2; // légal, puisque la variable ptr de type "pointeur" n'est pas const
int const * const ptr2= &CTE1; ptr2= &CTE2; // illégal : ptr2 est de type "pointeur const" (sur un int const)
int i1= 1; int i2= 2;
int * const ptr3= &i1; *ptr3= 12; // Maintenant i1= ptr3= &i2; // illégal : ptr3 est un "pointeur const" (sur un int)
Un "pointeur const" ressemble un peu à une référence : il pointe toujours sur la même variable.
-- ;-)
On Fri, 28 Nov 2003 13:39:12 +0100, "Jean-Marc Molina"
<goa_pasdepourriel_@ifrance.com> wrote:
Un pointeur c'est dynamique
Où as-tu été pêcher ça ?
int const CTE1= 10;
int const CTE2= 12;
int const *ptr= &CTE1;
ptr= &CTE2; // légal, puisque la variable ptr de type "pointeur" n'est
pas const
int const * const ptr2= &CTE1;
ptr2= &CTE2; // illégal : ptr2 est de type "pointeur const" (sur un
int const)
int i1= 1;
int i2= 2;
int * const ptr3= &i1;
*ptr3= 12; // Maintenant i1=
ptr3= &i2; // illégal : ptr3 est un "pointeur const" (sur un int)
Un "pointeur const" ressemble un peu à une référence : il pointe
toujours sur la même variable.