56 votes

Puis-je surcharger un opérateur en Objective-C ?

Est-il possible d'outrepasser l'utilisation d'un opérateur en Objective-C ?

Par exemple

myClassInstance + myClassInstance

appelle une fonction personnalisée pour ajouter les deux.

0voto

Non, Objective-C ne supporte pas la surcharge des opérateurs.

-28voto

NSResponder Points 14459

Premièrement, la surcharge des opérateurs est maléfique . Deuxièmement, le C n'a pas de surcharge d'opérateurs, et l'Objective-C est un véritable sur-ensemble du C, qui n'ajoute qu'une poignée de mots-clés et une syntaxe de messagerie.

Cela dit, si vous utilisez l'environnement de développement d'Apple, vous pouvez utiliser Objective-C++ au lieu d'Objective-C, ce qui vous donne accès à toutes les erreurs et défauts de C++, y compris la surcharge des opérateurs. La façon la plus simple d'utiliser Objective-C++ est de changer l'extension de vos fichiers d'implémentation de ".m" à ".mm".

24 votes

Je ne pense pas qu'il soit juste de dire catégoriquement que c'est mauvais. Il ne semble généralement pas poser de gros problèmes dans Smalltalk, Ruby, Python ou Haskell.

3 votes

Ayant travaillé sur plusieurs grands projets python, la surcharge d'opérateurs peut être un véritable mal..... J'ai perdu un nombre incalculable d'heures à cause de surcharges boguées. La plupart du temps pour essayer de trouver ces maudites choses.

2 votes

Smalltalk n'a pas de surcharge d'opérateurs, il a des messages binaires qui se comportent de la même manière que tous les autres messages.

Prograide.com

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.

Powered by:

X