⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tutcpp_heritage.html

📁 ce fichier est un tutorial de c++.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<br><tt><font color="#1A3251">&nbsp;</font><i><font color="#006600">//
Coloration d'un point</font></i></tt>
<br><tt><font color="#3333FF">&nbsp;void</font><font color="#1A3251"> Colore(
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> R, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> G, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> B )</font></tt>
<br><tt><font color="#1A3251">&nbsp;{</font></tt>
<br><tt><font color="#1A3251">&nbsp; byRed = R;</font></tt>
<br><tt><font color="#1A3251">&nbsp; byGreen = G;</font></tt>
<br><tt><font color="#1A3251">&nbsp; byBlue = B;</font></tt>
<br><tt><font color="#1A3251">&nbsp;}</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">&nbsp;PointCol ptc;</font></tt>
<br><tt><font color="#1A3251">&nbsp;ptc.Init( 5, 10 );</font></tt>
<br><tt><font color="#1A3251">&nbsp;ptc.Colore( 64, 128, 192 );</font></tt>
<br><tt><font color="#1A3251">&nbsp;ptc.Affiche();</font></tt>
<br><tt><font color="#1A3251">&nbsp;ptc.Deplace( 3, 6 );</font></tt>
<br><tt><font color="#1A3251">&nbsp;ptc.Affiche();</font></tt>
<br><tt><font color="#1A3251">}</font></tt></td>
</tr>
</table>
</blockquote>
<a NAME="Utilisation des membres de la classe de base"></a><b><font face="Verdana"><font color="#1A3251"><font size=+1>Utilisation
des membres de la classe de base</font></font></font></b>
<blockquote><font color="#1A3251"><font face="Verdana">Utiliser des membres
de la classe de base est simple &agrave; r&eacute;aliser. Il faut cependant
faire attention leur statut. Les membres priv&eacute;s ne peuvent &ecirc;tre
appel&eacute;s. Soit une m&eacute;thode "</font><tt><font size=+1>InitCol</font></tt><font face="Verdana">"
qui initialise un point color&eacute; :</font></font>
<br>&nbsp;
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="90%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">void</font><font color="#1A3251"> InitCol(
</font><font color="#3333FF">int</font><font color="#1A3251">
Abs, </font><font color="#3333FF">int</font><font color="#1A3251"> Ord,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> R, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> G, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> B )</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251">&nbsp;Point::Init(Abs, Ord);</font></tt>
<br><tt><font color="#1A3251">&nbsp;byRed = R;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byGreen = G;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byBlue = B;</font></tt>
<br><tt><font color="#1A3251">}</font></tt></td>
</tr>
</table>

<p><font face="Verdana"><font color="#1A3251">Il suffit donc d'appeler
la m&eacute;thode souhait&eacute;e, pr&eacute;c&eacute;d&eacute;e de la
classe.</font></font></blockquote>
<a NAME="Red閒inition des fonctions membre et appel des constructeurs"></a><b><font face="Verdana"><font color="#1A3251"><font size=+1>Red&eacute;finition
des fonctions membre et appel des constructeurs</font></font></font></b>
<blockquote><font color="#1A3251"><font face="Verdana">L'appel &agrave;
la m&eacute;thode "</font><tt><font size=+1>Affiche</font></tt><font face="Verdana">"
fonctionne tr&egrave;s bien, et utilise en fait la d&eacute;claration faite
dans la classe <i>Point</i>, ce qui est logique puisque <i>PointCol</i>
n'en poss&egrave;de aucune autre. Mais que se passe-t-il si on veut afficher
un point color&eacute; ?&nbsp;</font></font>
<br><font color="#1A3251"><font face="Verdana">Une premi&egrave;re solution
consiste &agrave; introduire une nouvelle m&eacute;thode "</font><tt><font size=+1>AfficheCol</font></tt><font face="Verdana">"
dans la classe fille.</font></font>
<p><font face="Verdana"><font color="#1A3251">En plus de cette m&eacute;thode,
nous allons ajouter un constructeur qui permet l'initialisation de la classe
<i>PointCol</i>.
Vous voyez imm&eacute;diatement quelle en pourrait &ecirc;tre la d&eacute;finition
:</font></font>
<p><tt><font color="#1A3251"><b>PointCol</b>( </font><font color="#3333FF">int</font><font color="#1A3251">
Abs, </font><font color="#3333FF">int</font><font color="#1A3251"> Ord,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> R, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> G, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> B);</font></tt>
<p><font face="Verdana"><font color="#1A3251">Il contient donc les coordonn&eacute;es
du point, plus les composantes de la couleur. La mise en oeuvre est un
peu plus complexe. Soit notre classe <i>Point</i> :</font></font>
<br>&nbsp;
<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">&nbsp;int</font><font color="#1A3251"> x;</font></tt>
<br><tt><font color="#3333FF">&nbsp;int</font><font color="#1A3251"> y;</font></tt>
<br><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251">&nbsp;Point(int, int);</font></tt>
<p><tt><font color="#1A3251">&nbsp;</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){ x+=a; y+=b; }</font></tt>
<br><tt><font color="#1A3251">&nbsp;</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">Nous voyons bien que, quelque
part, il faudrait passer les coordonn&eacute;es entr&eacute;es en param&egrave;tres
du constructeur initialisant de <i>PointCol</i>, vers celui de <i>Point</i>
! Ceci s'effectue de la fa&ccedil;on suivante :</font></font>
<br>&nbsp;
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="90%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">#include </font><font color="#1A3251">"Point.h"</font></tt>
<p><tt><font color="#3333FF">class</font><font color="#1A3251"> <b>PointCol
</b>:
</font><font color="#3333FF">public
</font><b><font color="#1A3251">Point</font></b></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251">&nbsp;</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> byRed;</font></tt>
<br><tt><font color="#1A3251">&nbsp;</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> byGreen;</font></tt>
<br><tt><font color="#1A3251">&nbsp;</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> byBlue;</font></tt>
<br><tt><font color="#3333FF">public</font><font color="#1A3251"> :</font></tt>
<br><tt><font color="#1A3251">&nbsp;PointCol( </font><font color="#3333FF">int</font><font color="#1A3251">,
</font><font color="#3333FF">int</font><font color="#1A3251">,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251">,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251">,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> );</font></tt>
<p><tt><font color="#3333FF">&nbsp;void</font><font color="#1A3251"> Colore(
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251">, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251">, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> );</font></tt>
<br><tt><font color="#1A3251">};</font></tt>
<p><i><tt><font color="#006600">// Constructeur initialisant de la classe
<b>PointCol</b>,</font></tt></i>
<br><i><tt><font color="#006600">// faisant appel au constructeur initialisant
de <b>Point</b>.</font></tt></i>
<br><tt><font color="#1A3251">PointCol::PointCol( </font><font color="#3333FF">int</font><font color="#1A3251">
Abs, </font><font color="#3333FF">int</font><font color="#1A3251"> Ord,
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> R, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> G, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> B) : <b>Point(Abs, Ord)</b></font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251">&nbsp;byRed = R;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byGreen = G;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byBlue = B;</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<p><tt><font color="#3333FF">void</font><font color="#1A3251"> PointCol::Colore(
</font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> R, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> G, </font><font color="#3333FF">unsigned
char</font><font color="#1A3251"> B )</font></tt>
<br><tt><font color="#1A3251">{</font></tt>
<br><tt><font color="#1A3251">&nbsp;byRed = R;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byGreen = G;</font></tt>
<br><tt><font color="#1A3251">&nbsp;byBlue = B;</font></tt>
<br><tt><font color="#1A3251">}</font></tt>
<br>&nbsp;</td>
</tr>
</table>

<p><font color="#1A3251"><font face="Verdana">Remarquez la transmission
de param&egrave;tres effectu&eacute;e par le "</font><b><tt><font size=+1>:Point(Abs,
Ord)</font></tt></b><font face="Verdana">". C'est en fait un appel au constructeur
initialisant de la classe de base.</font></font>
<br><font color="#1A3251"><font face="Verdana">Il est possible d'&eacute;tendre
cette mise en oeuvre &agrave; tous les constructeurs, par exemple par recopie.
Essayez ! Vous pouvez &eacute;galement changer le type d'h&eacute;ritage
et le rendre "</font><tt><font size=+1>private</font></tt><font face="Verdana">",
pour voir la diff&eacute;rence.</font></font>
<p><font face="Verdana"><font color="#1A3251">Dans certains cas, il peut
&ecirc;tre int&eacute;ressant de pouvoir avoir acc&egrave;s aux donn&eacute;es
membres de la classe de base. Par exemple, reprenons notre affichage dans
<i>PointCol</i>
:</font></font>
<br>&nbsp;
<table BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="90%" BGCOLOR="#DBDBEE" >
<tr>
<td><tt><font color="#3333FF">#include </font><font color="#1A3251">"Point.h"</font></tt>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -