Quelle est la différence entre les arguments dans:
int foo1(const Fred &arg) {
...
}
et
int foo2(Fred const &arg) {
...
}
? Je ne vois pas ce cas couvert dans la FAQ de parashift.
Quelle est la différence entre les arguments dans:
int foo1(const Fred &arg) {
...
}
et
int foo2(Fred const &arg) {
...
}
? Je ne vois pas ce cas couvert dans la FAQ de parashift.
Il n'y a pas de différence sémantique entre const T&
et T const&
; la langue traite comme du même type.
À l'égard de laquelle vous devriez préférer un point de vue stylistique, cependant, je vais être en désaccord avec beaucoup d'autres réponses et préfèrent const T&
(et const T*
):
const T*
empiriquement semble la façon la plus commune pour moi que T const*
dans l'ensemble de la C code que j'ai vu. (C'est le style K&R est Le Langage de Programmation C et le style utilisé dans le C standard.)const T&
a beaucoup plus d'inertie que T const&
, et je pense que la suite de pratiques communes est plus lisible que dogmatiquement adhérant à droite à gauche règles d'analyse.T const*
, il semble plus facile de misenter comme T* const
(surtout si les gens ne sont pas habitués à cela).Sur l'ensemble de droite à gauche de l'analyse syntaxique de l'argument que les gens semblent aimer à utiliser: comme je l'ai mentionné dans un commentaire à une autre réponse, const T&
lit à droite à gauche. C'est une référence à un T constante. "T" et "constant" chacun peut travailler comme un adjectif ou un nom. (En outre, la lecture, T const*
droite à gauche peut être ambigu et pourrait conduire à une interprétation erronée comme "pointeur constant pour T".)
Pas de différence en tant que const est lire de droite à gauche à l'égard de l' &, de sorte que les deux représentent une référence de immuable Fred instance.
Fred& const
signifierait la référence elle-même est immuable, ce qui est redondant; lorsque vous traitez avec des pointeurs const deux Fred const*
et Fred* const
sont valables, mais différent.
C'est une question de style, mais je préfère utiliser const
comme un suffixe, car il peut être appliqué de façon uniforme y compris les fonctions membres const.
S'ils ne font qu'un, pour conserver la cohérence avec la règle RIGHT-LEFT concernant l'analyse des déclarations C et C ++, il est préférable d'écrire Fred const &arg
Reportez-vous également à cela pour mieux comprendre les déclarations, les qualificateurs et les déclarateurs.
Aucune différence, les deux sont syntaxiquement et sémantiquement identiques.
Aucune différence http://c-faq.com/ansi/constptrconst.html
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.