J'ai quelques questions concernant la différenciation entre les versions const et non-const des méthodes en C++.Différenciation entre les versions const et non-const des méthodes en C++
Exemple:
MyObject* MyClass::objectReference()
const MyObject* MyClass::objectReference() const
Mes questions sont les suivantes:
- Est-il possible à tous de faire la différence entre la version de la méthode est appelée manuellement? Ou est-il complètement/complètement automatique et si oui, quelles sont les règles précises pour déterminer quelle version doit être appelée? En ce qui concerne (1), si vous ne pouvez pas différencier l'appel de la version const de la version non-const, il est impossible d'appeler une version d'une méthode de l'autre pour éviter la duplication?
Comment créer un lien vers une version ou l'autre dans la documentation d'une des méthodes utilisant doxygen? (par exemple "const version de myMethod()." ou "non-const version de myMethod().")J'ai découvert cela moi-même - ajoutez ou omettez "const" à la fin de la signature de la méthode.
Je suggère de faire de * # 3 * une question différente - la dernière est spécifique à Doxygen, alors que les premières sont des questions générales en C++. Seperating * # 1 * et * # 2 * pourrait mieux fonctionner aussi. –
# 2 est juste un cas particulier de # 1, où l'objet en question est celui qui est pointé par 'this'. Je suis tout à fait d'accord que le numéro 3 devrait avoir sa propre question, cependant. – bcat
@bcat: Eh bien, donc * pourrait * - le partage d'implémentation est un problème intéressant en soi: [# 1] (http://stackoverflow.com/questions/407100/calling-a-const-function-from-a -non-const-object), [# 2] (http://stackoverflow.com/questions/1333849/how-to-generate-a-non-const-method-from-a-const-method), [# 3] (http://stackoverflow.com/questions/856542/elegant-solution-to-duplicate-const-and-non-const-getters), ... :) –