# Cour 1 -- Language Orienté Objet avancé (C++) ###### tags `cour` `M1 S1` `cpp` [Somaire](/V1WXmN9oTdauw8pTXPhqrQ)\ [~~Precedent~~]() > [time= 14 sept 2020] [TOC] ## C++ un C étendu? ### compilation - gcc #### convention de nomage fichier sourche: - .cpp - .C - .cxx - .cc - .cp - .c++ fichier d'entête (headers) - .tcc (template) - .hpp - .H - .hxx - .hh - .h faire un fichier objet:\ `g++ - c fichier.cpp` ->`fichier.o`\ édition de lien: \ `g++ -o fichierExecutable fichier1.o fichier2.o...` standard : `-std=c++17`\ mode le plus strict pour le standard: `--pedandic` ## Les variables - un **type** est un ensemble de valeurs et un ensemble d'++opérations associées++. - un **objet** est un ++espace mémoire++ contenant une valeur d'un ++type donné++. - une **valeur** est un ++mot binaire++ interprété dans un ++type donné++. - une **variable** est un ++objet nommé++. - une **déclaration** associe un ++nom à un objet++. - une **définition** est une ++déclaration++ ++associant++ un ++espace mémoire à l'objet déclaré++. La ++lecture++ une variable on produit une **r-value**\ L'++écriture++ se fait par une **l-value** ### constante #### const_expr est évalué a la compilation ##### type constant **const *type*** interdit l'usage en tant que l-value.\ les opérateurs qui modifient la valeur de la varaiable du type considéré (ex: =, ++) ```=cpp const double avogadro = 6.022E23; const double racineDeTrois = 1.732; avogadro = 34; // interdit const double *pointeurSurConstante = &avogadro; pointeurSurConstante = &racineDeTrois; *pointeurSurConstante = 12; // interdit double rapport = 24; double longueur = 4.5; double *const pointeurRapport = &rapport; *pointeurRapport = 89; pointeurRapport = &longueur; // interdit const double * const pConstanteDAvogadro = &avogadro; pConstanteDAvogadro = &racineDeTrois; // interdit *pConstanteDAvogadro = 28.9; // interdit ``` ++dans les prototypes:++ ```=cpp char *strcpy(char *dst, const char *src) ``` ```cpp= char *s = new char[100]; const char *t = “Bonjour“; strcpy(s,t); strcpy(t,s); // interdit char *u = new char[100]; strcpy(u,s); ``` on ne peut pas modifié src ### new / delete ```cpp= int *a = new int(12); delete a; // array int *tab_a = new int[10]; delete []tab_a; ``` ### valeur par défaut ```c++ constexpr int RADIAN = 0; constexpr int DEGRE = 1; constexpr int GRADE = 2; double sinus(double angle, const int unite=RADIAN); void foo(int a, int b, int c=1, int d=2, int e=3); void main() { f(10, 11, 13); // équiv f(10, 11, 13, 2, 3); } ``` [Suivant](/fKuIq0FAQaCvXKklO6Xgew)