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

📄 objectpointer.html

📁 关于 C++ 的历史无须我来介绍了
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

  
  <link rel="stylesheet" href="css/stdlayout.css" type="text/css">

  
  <link rel="stylesheet" href="css/print.css" type="text/css">

  
  <meta content="text/html; charset=gb2312" http-equiv="content-type">

  
  <title>物件指标</title>
</head>


<body>

<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>

<h1><a href="CppGossip.html">C++
Gossip: 物件指标</a></h1>

这个主题延续 <a href="ConstructorDestructor.html">建构函式、解构函式</a>
的范例,主要在main()函式的不同,先列出这个部份的程式码: <br>

<ul>

  <li>main.cpp</li>

</ul>

<pre>#include &lt;iostream&gt; <br>#include "SafeArray.h"<br>using namespace std; <br><br>int main() {<br>    SafeArray *safeArray = new SafeArray(10);<br>    <br>    for(int i = 0; i &lt; safeArray-&gt;length; i++) {<br>        safeArray-&gt;set(i, (i + 1) * 10);<br>    }<br>    <br>    for(int i = 0; i &lt; safeArray-&gt;length; i++) {<br>        cout &lt;&lt; safeArray-&gt;get(i) &lt;&lt; " ";<br>    }<br>    cout &lt;&lt; endl;<br>    <br>    delete safeArray;<br>    <br>    return 0; <br>}</pre>

<span class="postbody"><br>

</span><span class="postbody">执行结果:</span><br>

<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">

  <tbody>

    <tr>

      <td style="background-color: rgb(0, 0, 0);"><small><span style="color: rgb(255, 255, 255);">10 20 30 40 50 60 70 80 90 100</span></small><span style="color: rgb(255, 255, 255);"><br>

      </span></td>

    </tr>

  
  </tbody>
</table>

<br>

在这个程式中,您使用new来动态配置物件,new会传回物件的记忆体空间位址,所以您必须使用“物件指标”来记录这个位址,物件指标与变数的指标类似,
只要使用类别名称加上*运算子即可宣告物件指标。 <br>

<br>

要使用物件指标存取物件成员时,并不是使用“.”运算子,而是使用“-&gt;”运算子,就如您在程式中所看到的。<br>

<br>

由于您是使用new来配置物件,所以必须使用delete来清除物件所配置到的记忆体空间,当物件被清除时,会执行其解构函式。<br>

<br>

类别其实就是您自行定义的资料型态,所以它也可以如同C++内建的资料型态一样进行阵列的建立,例如:<br>

<div style="margin-left: 40px;"><span style="font-weight: bold; font-family: Courier New,Courier,monospace;">SafeArray arrs[] = {SafeArray(5), SafeArray(10), SafeArray(15)};</span><br>

</div>

<br>

由于阵列名称拥有指标的运算特性,当您对物件指标加一或减一时,它会位移一个物件的记忆体单位,例如下面这个程式中,您使用物件指标来存取阵列元件内容:
<br>

<ul>

  <li>main.cpp</li>

</ul>

<pre>#include &lt;iostream&gt; <br>#include "SafeArray.h"<br>using namespace std; <br><br>int main() {<br>    SafeArray arrs[] = {SafeArray(5), SafeArray(10), SafeArray(15)};<br>    <br>    for(int i = 0; i &lt; 3; i++) {<br>        SafeArray *safeArray = arrs + i;<br>        for(int j = 0; j &lt; safeArray-&gt;length; j++) {<br>            safeArray-&gt;set(j, (j + 1) * 10);<br>        }<br>    }<br>    <br>    for(int i = 0; i &lt; 3; i++) {<br>        SafeArray *safeArray = arrs + i;<br>        for(int j = 0; j &lt; safeArray-&gt;length; j++) {<br>            cout &lt;&lt; safeArray-&gt;get(j) &lt;&lt; " ";<br>        }<br>        cout &lt;&lt; endl;<br>    }<br>    <br>    system("pause");<br>         <br>    return 0; <br>}</pre>

<span class="postbody"><br>

执行结果:</span><br>

<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">

  <tbody>

    <tr>

      <td style="background-color: rgb(0, 0, 0);"><small><span style="color: rgb(255, 255, 255);">10 20 30 40 50<br>

10 20 30 40 50 60 70 80 90 100<br>

10 20 30 40 50 60 70 80 90 100 110 120 130 140 150</span></small><span style="color: rgb(255, 255, 255);"><br>

      </span></td>

    </tr>

  
  </tbody>
</table>

<br>

<br>

</body>
</html>

⌨️ 快捷键说明

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