📄 objectpointer.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 <iostream> <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 < safeArray->length; i++) {<br> safeArray->set(i, (i + 1) * 10);<br> }<br> <br> for(int i = 0; i < safeArray->length; i++) {<br> cout << safeArray->get(i) << " ";<br> }<br> cout << 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>
要使用物件指标存取物件成员时,并不是使用“.”运算子,而是使用“->”运算子,就如您在程式中所看到的。<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 <iostream> <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 < 3; i++) {<br> SafeArray *safeArray = arrs + i;<br> for(int j = 0; j < safeArray->length; j++) {<br> safeArray->set(j, (j + 1) * 10);<br> }<br> }<br> <br> for(int i = 0; i < 3; i++) {<br> SafeArray *safeArray = arrs + i;<br> for(int j = 0; j < safeArray->length; j++) {<br> cout << safeArray->get(j) << " ";<br> }<br> cout << 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 + -