Question

En C ++, la signature d'une fonction dépend en partie du fait qu'elle soit ou non const. Cela signifie qu'une classe peut avoir deux fonctions membres avec des signatures identiques, sauf que l'une est const et l'autre pas. Si vous avez une classe comme celle-ci, le compilateur décidera de la fonction à appeler en fonction de l'objet sur lequel vous l'appelez: s'il s'agit d'une instance const de la classe, la version const de la fonction sera appelée; si l'objet n'est pas const, l'autre version sera appelée.

Dans quelles circonstances pourriez-vous profiter de cette fonctionnalité?

Était-ce utile?

La solution

Cela n'a de sens que lorsque la fonction membre renvoie un pointeur ou une référence à un membre de données de votre classe (ou à un membre d'un membre, ou à un membre d'un membre d'un membre, ... etc.). Il est généralement mal vu de renvoyer des pointeurs non constants ou des références à des membres de données, mais cela est parfois raisonnable ou simplement très pratique (par exemple, l'opérateur []). Dans de tels cas, vous fournissez les versions const et non const du getter. De cette façon, la décision sur la possibilité ou non de modifier l'objet dépend de la fonction qui l'utilise, qui a le choix de le déclarer const ou non-const.

scroll top