jeudi 23 mai 2013

Langage C++

Vous cherchez les caractéristiques principales du Langage C++. Vous développez dans d'autres langages comme VB, Java ou C# alors pour vous remettre rapidement au C++, voici les caractéristiques du Langage C++.

Introduction

Langage de programmation créé en 1979 chez Bell Labs par Bjarne Stroustrup, c'est une surcouche du langage C pour en faire un langage Objet.

Les normes ISO : 1998 (C++98), 2003 (C++03), 2011 (C++11), 2014 (C++14) et 2020 (C++2020) ...

Documentation complète et à jour du langage C++ est disponible sur la page Wiki :

cppreference.com

Vous pouvez, dans l'url, remplacer "en." par "fr." pour avoir le site en français.

Le standard C ++ 11 est une extension majeure du standard C ++ après C++ 98

auto: déclaration de type autodéductible par la déclaration

auto i = 0, d = 0.0; // i is int and d double

decltype: est utile lors de la déclaration de types difficiles ou impossibles à déclarer à l'aide de la notation standard, comme les types liés à lambda ou les types qui dépendent de paramètres de modèle.

C++14 est souvent appelée correction de bogue de C++11

C++03 corrige les rapports de défauts de C++98

Mots clefs en C++

Microsoft - Keywords (C++)
C'est l'entrée de la doc complète, un peu spécifique Microsoft, des explications trop longues.

Comment Ca Marche - Mots clés du C++
Les mots clefs communs au C et au C++ sont indiqués en caractères gras.

Petits rappels sur les mots clefs en C++  :

auto : Déclare une variable dont le type est déduit de son initialisation. Utile lors de l'utilisation d'expressions lambda.

friend : Permet à une fonction ou une classe d'accéder aux membres privés et protégés d'une classe.
Une fonction déclarée friend est une fonction qui n'est pas membre d'une classe mais qui a accès aux membres privés et protégés de la classe.

mutable : S'applique aux données membres non statiques et non constantes d'une classe. Permet à une fonction déclarée const de modifier cette variable.

register : Spécifie que la variable doit être stockée dans un registre de l'ordinateur, si possible.

const_cast : Supprime les attributs const, volatile et __unaligned d'une classe..modifie le cast d'une constante afin de pouvoir la modifier.

delegate : Déclare un type qui représente un pointeur de fonction.

Lambda expressions

Cours en C++

Cprogramming.com - Learn C and C++ Programming

En anglais mais c'est une Somme, tout sur la programmation en langage C et C++. Achetez son livre pour soutenir ce travail colossale. Il y a les réponses à toutes les questions des exemples de programmation de projets complets.

Pour réviser rapidement, des questionnaires (quiz en C en C++), ludiques :

Cprogramming.com - C++ and Computer Science Quizzes

The basics of C++ : 1 - C, 2 - C, 3 - A, 4 - B, 5 - C, 6 - B, 7 - D

Allocation de mémoire en C/C++

En langage C++, comme en langage C, un très gros problème c'est l'allocation mémoire. Où sont les objets, comment sont-ils instanciés et libérés lorsque le programme n'en a plus besoin, en sachant que toutes allocation en dehors d'une mémoire libre et c'est le crash !

Developpez.com - Allocation de mémoire sécurisée en C et C++

C'est un début, il faut redéfinir les fonction d'allocation de base, malloc, realloc et free pour en faire des fonctions qui :

  • gèrent les cas d'échec 
  • lister les pointeurs libres ou non libres
  • allouer et désallouer avec vérification de possibilité

Attention : haypo s'est fait racheter son nom de domaine "haypocalc.com" pointe maintenant vers tout autre chose ... LoL.

Même si malloc et free existent en C++, il est préférable d'utiliser new et delete ... surtout si l'on travaille avec des objets.

En cas d'échec new lève une exception de type std::bad_alloc et le programmeur n'a plus à écrire le test déprécié :

if( NULL==data ) error();

Il faut également noter que caster malloc est considéré comme une erreur la méthode utilisée pas les programmeurs expérimentés est :

double *p;
p = malloc( n * sizeof (*p ));

Design Patterns en C++

Sur ce blog :

Langage C++ - Design Patterns en C++

Un sujet indispensbale

Class, Agrégation, Héritage, Polymorphism

Pour aller plus loin :

DriveSodevlog - support C++

Merci à IUT Informatique Bordeaux 1

Aucun commentaire:

Enregistrer un commentaire