Académique Documents
Professionnel Documents
Culture Documents
Chap 1 2 3 Introduction
Chap 1 2 3 Introduction
3
1.1 Historique:......................................................................................................................................................3
1.2 Caractristiques :............................................................................................................................................3
1.3 Objectifs atteints :...........................................................................................................................................3
1.4 Remarque.......................................................................................................................................................3
1.5 Bibliographie..................................................................................................................................................4
2. LES EXTENSIONS DE C (NON OBJETS) .................................................................................................5
2.1 Les commentaires...........................................................................................................................................5
2.2 Conversions explicites....................................................................................................................................5
2.3 Utilisation des types enum, struct et union.....................................................................................................5
2.4 Dclaration des variables................................................................................................................................5
2.5 Fonction inline...............................................................................................................................................6
2.6 Paramtres optionnels avec valeur par dfaut................................................................................................6
2.7 Surcharge des noms de fonctions...................................................................................................................6
2.8 Oprateurs (Objets) de sortie et dentre: << et >>........................................................................................7
2.9 Oprateurs : new et delete..............................................................................................................................7
2.10 fonction de gestion derreur dallocation......................................................................................................8
2.11 Adressage par rference &............................................................................................................................8
2.12 Les fonctions gnriques (template).............................................................................................................9
3. INCOMPATIBILITS ENTRE C ET C++................................................................................................10
3.1 Entte de fonctions.......................................................................................................................................10
3.2 Prototypes de fonctions................................................................................................................................10
3.3 fonction sans argument.................................................................................................................................10
3.4 fonction sans valeur de retour.......................................................................................................................10
3.5 le type void *................................................................................................................................................10
3.6 Symbole de type const..................................................................................................................................10
Langage C++
ISAIP
Langage C++
Pierre Bodin
ISAIP
Langage C++
1. Prsentation gnrale
1.1
Historique:
C++ a t dvelopp vers 1980 par Bjarne Stroustup (Bell Labs, AT & T )
Amliorer le langage C
1.2
Caractristiques :
Le langage C++ contient des (amliorations) caractristiques nouvelles par rapport au C qui ne sont pas
spcifiquement objet.
1.3
Objectifs atteints :
1.4
Remarque
ISAIP
Langage C++
1.5
Bibliographie
Ed. Eyrolles
Ed. Eyrolles
Ed. Eyrolles
Ed. Eyrolles
O'Reilley Cd, Oualline Steve La programmation C++ par la pratique (255 F.) (exemples)
Meyer Jean Jacques Borland C++ TurboC++ 3.0/3.1 pour Windows
Weiskamp, Heiney K. L., Flamig B. Object Oriented Programming with Turbo C++
Ed. Wiley
Borland C++ 3.0 Guide du programmeur
Ed Borland
Ed. Addison-Wesley
Ed. Addison-Wesley
ISAIP
Langage C++
2.1
Les commentaires
C
/* commentaire en C */
C ++
// commentaire en C++ et C ANSI
/* com. toujours acceptable
en C++ */
Conversions explicites
Nouvelle syntaxe : (le cast est toujours valable)
C
C ++
int i = 1;
float x = 3.2;
int i = 1;
float x = 3.2;
i = (int) x;
x = (float) i;
i = int(x);x = float(i);
Point p = Point(1.0, 2.0) ; (initialisation par
l'appel d'une fonction constructure)
i = (int) x;
x = (float) i;
2.3
// toujours valable
C ++
enum E { ...... };
struct S { ...... };
union U { ...... };
enum E { ...... };
struct S { ...... };
union U { ...... };
enum E e;
struct S s, *ptr;
Union U u;
E e;
S s, *ptr;
struct S s1; // toujours valable
U u;
C
typedef enum { False, True } BOOL;
C ++
enum BOOL { False, True };
BOOL ouvert ;
BOOL ouvert;
2.4
ISAIP
Langage C++
{
int i;
// dclaration de variables
i = 2;
// instruction
int j;
// autre dclaration de variable
j = i;
...
for( int k = 0; k < 5; k++ ) {
...
}
// valeur de k ici ? (dpend des compilateurs !)
}
2.5
Fonction inline
Fonction expanse (dveloppe) chaque appel
// j vaut 4
Ressemble une macro C mais faire trs attention dans la macro (effet de bord) !
C
#define ABS(x) (x)>0 ? (x) : (-x)
C ++
inline int abs( int x )
{ return x>0 ? x : -x ;}
int i, k = -1;
int i, k = -1;
i = ABS( k ) ; // i vaut 1;
I = abs( k ) ; // i vaut 1;
2.6
// appel classique
// => f ( 1.23, 10, " ");
// => f ( 1.23, 2, " ");
// illgal
// => illgal
// => illgal
La dfinition des valeurs par dfaut peut se faire soit dans le prototype de la fonction, soit dans lentte de
sa dfinition, mais pas dans les 2 la fois. Mettre de prfrence dans le prototype.
Les valeurs par dfaut sont places partir de la fin de la liste des paramtres.
2.7
ISAIP
Langage C++
2.8
Ces oprateurs sont en ralit des oprateurs relevant des possibilits OBJET du langage.
Ils sont introduits ici pour pouvoir les utiliser tout de suite sans attendre tous les dveloppements ncessaires (et
longs) leur explication.
#include <stdio.h>
#include <conio.h>
#include <iostream.h> // pour pouvoir utiliser les flots cin et cout
int main()
{
int n; float x;
// mthode traditionnelle avec printf et scanf
printf( "\n\nentrez un entier et un flotant : ");
scanf( "%d %f", &n, &x );
printf( " le produit de %5d par %10.2f est : %10.2f\n", n, x, n * x );
// mthode C++ avec les flots cin et cout
cout << "\n\nentrez un entier et un flotant : " ;
cin >> n >> x ;
cout << " le produit de " << n << " par " << x << " est " << n * x ;
return 0;
}
<< est appel output on insre dans le flot de sortie (oprateur d'insertion ou injection)
>> est appel input
on extrait du flot d'entre (oprateur d'extraction)
(comme un entonnoir !)
<<endl; // quivaux /n mais plus performant en objet
4 flots prdfinis :
cin
(quivalent stdin en C)
cout
(quivalent stdout en C)
cerr
(quivalent stderr en C)
clog
2.9
ISAIP
Langage C++
C ++
// ou delete tab;
*pval = 5 ;
*pval += 2;
refVal = 5;
refVal += 2;
// initialisation obligatoire
Nouveau type.
Si T est un type, T& est le type rfrence vers T
Toutes les manipulations de la rfrence seffectuent sur lobjet rfrenc.
Une rfrence doit obligatoirement tre initialise lors de sa dclaration.
Une rfrence est un alias (un autre nom) pour la variable rfrence.
On ne peut pas dfinir un pointeur sur une rfrence.
val
100
102
val
refVal
100
refVal += 2;
refVal
100
j
104
7
refj
106
ISAIP
15
refj = refVal;
104
refj
104
Langage C++
C ++
void echange( int &x, int &y) {
int temp;
temp = x; x = y; y = temp;
}
void main() {
int a = 1, b = 2;
echange( a, b );
}
C ++
int x, y
.....
int &f( int b ) { return b ? x : y ; }
....
int i = f( 1 ); // range x dans i
f ( 0 ) = 5;
// range 5 dans y
on peut utiliser ainsi une fonction dans la partie gauche dune expression
2.12
ISAIP
Langage C++
3.1
Entte de fonctions
3.2
// erreur de compilation
Prototypes de fonctions
3.3
float f1 ( ) ;
3.4
// ni f2 ( ) ni
le type void *
3.6
float f ( void);
void f2 ( ) ;
3.5
void * Type *
// ok
// erreur la compilation
// ok
Le mot cl const, plac devant un symbole, est un modificateur qui signifie que la valeur du symbole ne doit pas
tre modifie.
En C++ un symbole dfini avec const est local au fichier : on peut redfinir le mme symbole dans un autre
fichier (avec une valeur diffrente)
En C
en C++
#define MAX 100
const int max = 100;
char tab[ MAX + 1]
char tab[ MAX + 1]
En C++ une constante doit obligatoirement tre initialise lors de sa dclaration.
ISAIP
Langage C++
10