Aujourd’hui, la plupart des applications web reposent sur tout un ensemble de technologies. Comprendre le rôle de chacune de ces technologies et créer une application depuis zéro en les utilisant peut vite devenir un parcours du combattant pour le novice !
Dans cet article, après une description des outils yarn, babel, webpack et react, nous allons créer une application HelloWorld utilisant ces 4 technologies.
Lire la suite de Web : Créer une application web avec Yarn, Babel, Webpack, React
Une fonctionnalité dont on a besoin régulièrement et dans beaucoup de situations, c’est la comparaison. Comparer deux objets est en effet utile pour pouvoir trier des objets, filtrer des données, ou encore simplement comme condition à l’exécution d’un bloc de code.
En C++, il fallait jusqu’à maintenant implémenter les différents opérateurs <
,>
,<=
,>=
,==
,!=
selon ce dont on avait besoin, et leurs implémentations étaient souvent répétitives et verbeuses. Par ailleurs, il fallait surcharger ces opérateurs pour les différents types de couples de données. Enfin, dernier problème : d’un point de vue fonctionnel, toutes les comparaisons ne se valent pas : on peut clairement comparer deux variables de type int
, mais comparer deux variables de type float
n’a parfois pas de sens (notamment si l’une des deux vaut NaN
).
Pour régler tous ces problèmes, un nouvel opérateur va faire son apparition en C++20 : l’opérateur "spaceship" dont cet article va détailler le fonctionnement.
Lire la suite de C++ : l’opérateur spaceship
Le C++ a souvent l’image d’un langage compliqué avec lequel il faut gérer la mémoire manuellement et où toute inadvertance mène irrémédiablement à une erreur inexplicable ou à des fuites mémoires fourbes.
Pourtant, un seul principe permet d’éviter les fuites mémoires et un grand nombre d’erreurs inexplicables : le RAII (qui signifie Resource Acquisition Is Initialization). En français : l’acquisition d’une ressource doit correspondre à l’initialisation.
Ce tuto va parler de ce principe, comment sa mise en place est facilitée par le C++ moderne et comment le mettre en place pour ses propres ressources.
Lire la suite de C++ : le RAII
Un principe fondamental de la programmation orientée objet : la séparation des interfaces et des implémentations. Qu’est-ce qu’une interface ? Il s’agit d’un ensemble de méthodes accessibles depuis l’extérieur qui permettent de modifier l’état interne d’un objet.
Dans ce tuto, nous allons voir que le principe NVI pour Non-Virtual Interface peut nous aider à avoir un code plus robuste et plus en phase avec l’encapsulation : meilleure séparation entre l’interface et les détails d’implémentation, meilleure séparation des responsabilités, impossibilité pour une classe fille de "casser" une fonctionnalité de la classe mère et maintenances et évolutions facilitées.
Lire la suite de C++ : le principe NVI (Non-Virtual Interface)
L’un des paradigmes incontournables du C++, c’est bien la programmation orientée objet. Mais mal l’utiliser peut vite mener à des comportements inexpliqués et/ou à des erreurs fatales.
Dans ce tuto, nous allons voir comment se protéger de quelques erreurs en utilisant le mot-clé override
, un mot-clé apparu en C++11 et qui se révèle bien pratique pour éviter des erreurs bêtes qui font perdre un peu la tête !
Lire la suite de C++ : le mot clé override
Depuis C++11, tout constructeur défini sans le mot clé explicit
est un constructeur de conversion. En d’autres termes, le ou les types d’arguments d’un tel constructeur peuvent être converti implicitement par le compilateur en la classe contenant ce constructeur.
De la même façon, il est possible de définir des opérateurs de conversion pour convertir notre classe en un type donné. Ces conversions, également implicites par défaut, sont parfois très pratiques.
Cependant, dans la majorité des cas, et comme tout ce qui est implicite, cela peut conduire à des erreurs. Nous allons voir par l’exemple comment le mot clé explicit
peut nous permettre d’éviter certaines erreurs.
Lire la suite de C++ : le mot clé explicit