📄 tutcpp_notionclasse.html
字号:
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#3333FF"> int</font><font color="#1A3251">
x;</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">int</font><font color="#1A3251">
y;</font></tt>
<p><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251"> Point();</font></tt>
<br><tt><font color="#1A3251"> Point(int, int);</font></tt>
<br><tt><font color="#1A3251"> ~Point(); </font><i><font color="#006600">//
Destructeur de la classe Point</font></i></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a, </font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Deplace(</font><font color="#3333FF">int</font><font color="#1A3251"> a,
</font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Affiche();</font></tt>
<br><tt><font color="#1A3251">};</font></tt></td>
</tr>
</table>
<p><font face="Verdana"><font color="#1A3251">Dans notre cas de classe
<i>Point</i>,le
destructeur a peu d'utilité. On pourrait à la rigueur placer
une instruction permettant de tracer la destruction. En revanche, lorsqu'une
classe possède par exemple des pointeurs comme données membre,
il est possible de désallouer la mémoire à cet endroit.</font></font>
<br><font face="Verdana"><font color="#1A3251">Un exemple :</font></font>
<br>
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="80%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">#include</font><font color="#1A3251"> <iostream.h></font></tt>
<p><tt><font color="#3333FF">class</font><font color="#1A3251"> <b>Test</b></font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#3333FF"> int</font><font color="#1A3251">
nSize;</font></tt>
<p><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251"> </font><i><font color="#006600">
// pas d'encapsulation pour ce membre.</font></i></tt>
<br><i><tt><font color="#006600"> // Ca n'est pas
très bon, mais c'est juste pour l'exemple.</font></tt></i>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">int</font><font color="#1A3251">
*pArray;</font></tt>
<p><tt><font color="#1A3251"> Test(</font><font color="#3333FF">int</font><font color="#1A3251">
n);</font></tt>
<br><tt><font color="#1A3251"> ~Test();</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">int</font><font color="#1A3251">
GetSize(){ </font><font color="#3333FF">return</font><font color="#1A3251">
nSize; }</font></tt>
<br><tt><font color="#1A3251">};</font></tt>
<br><tt><font color="#1A3251">Test::Test(</font><font color="#3333FF">int</font><font color="#1A3251">
n)</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251"> cout << </font><font color="#CC6600">"--
Constructeur --"</font><font color="#1A3251"> << endl;</font></tt>
<br><tt><font color="#1A3251"> nSize = n;</font></tt>
<br><tt><font color="#1A3251"> pArray = </font><font color="#3333FF">new
int</font><font color="#1A3251">[nSize];</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<br><tt><font color="#1A3251">Test::~Test()</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251"> cout << </font><font color="#CC6600">"--
Destructeur --"</font><font color="#1A3251"> << endl;</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">if</font><font color="#1A3251">(
pArray )</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">delete</font><font color="#1A3251">
[]pArray;</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<p><tt><font color="#3333FF">void</font><font color="#1A3251"> main()</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251"> Test t(5);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">for</font><font color="#1A3251">(
</font><font color="#3333FF">int</font><font color="#1A3251">
i=0; i<t.GetSize(); i++ )</font></tt>
<br><tt><font color="#1A3251"> {</font></tt>
<br><tt><font color="#1A3251">
t.pArray[i]=i;</font></tt>
<br><tt><font color="#1A3251"> }</font></tt>
<p><tt><font color="#1A3251"> Test *t2; </font><i><font color="#006600">//
Pointeur d'objet</font></i></tt>
<br><tt><font color="#1A3251"> t2 = </font><font color="#3333FF">new</font><font color="#1A3251">
Test(10); </font><i><font color="#006600">// Allocation dynamique</font></i></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">for</font><font color="#1A3251">(
i=0; i<t2->GetSize(); i++ )</font></tt>
<br><tt><font color="#1A3251"> {</font></tt>
<br><tt><font color="#1A3251">
t2->pArray[i]=i;</font></tt>
<br><tt><font color="#1A3251"> }</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">delete</font><font color="#1A3251">
t2; </font><font color="#006600">// Destruction explicite</font></tt>
<br><tt><font color="#1A3251">}</font></tt></td>
</tr>
</table>
</blockquote>
<a NAME="Les Fonctions membre"></a><b><font face="Verdana"><font color="#1A3251"><font size=+1>Les
Fonctions membre</font></font></font></b>
<blockquote><b><font face="Verdana"><font color="#1A3251">Surdéfinition</font></font></b>
<br><font face="Verdana"><font color="#1A3251">Nous avons vu dans le chapitre
précédent qu'il était possible de définir plusieurs
constructeurs différents. Nous pouvons étendre cette possibilité
de <i>surdéfinition</i> à d'autres méthodes que le
constructeur (sauf le destructeur !) :</font></font>
<br>
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="80%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">class</font><font color="#1A3251"> <b>Point</b></font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#3333FF"> int</font><font color="#1A3251">
x;</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">int</font><font color="#1A3251">
y;</font></tt>
<p><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251"> Point();</font></tt>
<br><tt><font color="#1A3251"> Point(int, int);</font></tt>
<br><tt><font color="#1A3251"> ~Point();</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a, </font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a);
</font><i><font color="#006600">//
Initialisation avec une même valeur</font></i></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Deplace(</font><font color="#3333FF">int</font><font color="#1A3251"> a,
</font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Deplace(</font><font color="#3333FF">int</font><font color="#1A3251"> a);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Affiche();</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Affiche(char* strMesg); </font><i><font color="#006600">// Affichage avec
un message</font></i></tt>
<br><tt><font color="#1A3251">};</font></tt></td>
</tr>
</table>
<p><b><font face="Verdana"><font color="#1A3251">Arguments par défaut</font></font></b>
<br><font color="#1A3251"><font face="Verdana">Tout comme une fonction
C++ classique, il est possible de définir des <i>arguments par défaut</i>.
Ceux-ci permettent à l'utilisateur de ne pas renseigner certains
paramètres. Par exemple, imaginons que l'initialisation par défaut
d'un point soit </font><tt><font size=+1>(0,0)</font></tt><font face="Verdana">.
Nous pouvons donc changer la méthode </font><b><tt><font size=+1>Init</font></tt></b><font face="Verdana">,
de sorte qu'elle devienne :</font></font>
<p><tt><font size=+1><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a=0);</font></font></tt>
<p><font face="Verdana"><font color="#1A3251">Désormais, quand l'utilisateur
appelle cette méthode, il a la possibilité de ne pas donner
de paramètre, signifiant qu'il veut initialiser son point à
0. De même :</font></font>
<p><tt><font size=+1><font color="#3333FF">void</font><font color="#1A3251">
Affiche(char* strMesg="");</font></font></tt>
<p><font face="Verdana"><font color="#1A3251">Permet de remplacer l'implémentation
de deux méthodes par une seule, mais qui prend en compte le non-renseignement
du paramètre. Notre programme devient donc :</font></font>
<br>
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="85%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">#include</font><font color="#1A3251"> <iostream.h></font></tt>
<p><tt><font color="#3333FF">class</font><font color="#1A3251"> <b>Point</b></font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#3333FF"> int</font><font color="#1A3251">
x;</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">int</font><font color="#1A3251">
y;</font></tt>
<p><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251"> Point();</font></tt>
<br><tt><font color="#1A3251"> Point(</font><font color="#3333FF">int</font><font color="#1A3251">,
</font><font color="#3333FF">int</font><font color="#1A3251">);</font></tt>
<br><tt><font color="#1A3251"> ~Point();</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a, </font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Init(</font><font color="#3333FF">int</font><font color="#1A3251"> a=0);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Deplace(</font><font color="#3333FF">int</font><font color="#1A3251"> a,
</font><font color="#3333FF">int</font><font color="#1A3251">
b);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Deplace(</font><font color="#3333FF">int</font><font color="#1A3251"> a=0);</font></tt>
<br><tt><font color="#1A3251"> </font><font color="#3333FF">void</font><font color="#1A3251">
Affiche(char* strMesg="");</font></tt>
<br><tt><font color="#1A3251">};</font></tt>
<p><tt><font color="#1A3251">Point::Point()</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251"> cout << </font><font color="#CC6600">"--Constructeur
par defaut--"</font><font color="#1A3251"> << endl;</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<br><tt><font color="#1A3251">Point::Point(int a, int b)</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251"> cout << </font><font color="#CC6600">"--Constructeur
(a,b)--"</font><font color="#1A3251"> << endl;</font></tt>
<br><tt><font color="#1A3251"> Init(a,b);</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<br><tt><font color="#1A3251">Point::~Point()</font></tt>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -