作者deepdish (要和数学装熟..)
看板TransCSI
标题Re: [问题] 程式:C++ 台大90 第五、六题
时间Wed May 25 11:53:04 2005
※ 引述《Elfiend (小孩)》之铭言:
: 台大90年度转学考计概第六题
1 #include <iostream>
2 using namespace std;
3
4 class Ex
5 {
6 public:
7 Ex() { p = new int; }
8 void set(int i) { *p = i; }
9 int get() { return *p; }
10 private:
11 int *p;
12 };
13
14 int main()
15 {
16 Ex test1, test2;
17 test1.set(-1);
18 cout << test1.get() << "";
19 test2.set(-2);
20 test1 = test2;
21 cout << test1.get() << "";
22 test2.set(-3);
23 cout << test1.get() << endl;
24 system("pause");
25 return 0;
26 }
: =====================================
程式 run 的结果是 -1 -2 -3
: 对类别的看法是→公有的:二个函数set(设值)get(取值)可以给其他使用
: 私有的: *p 内部自己使用的指标,不被外部程式影响
所以 main 不能直接呼叫 private,但是此程式并没有看到被直接呼叫的情况
应该只有 16 行宣告物件时有使用到 private
而 public 很明显可以更动 *p 的值,不受 private 影响
: 而我的问题是第17行:test1 = test2
: 这个等号的意义是什麽???
等号代表 test1 物件指到 test2 的位置
结果就是两个物件指到同一位置
所以在这个程式中 test1 的值会等同於 test2 的值
: 如果私有的不被外部程式影响,那这个等号应该没有作用,所以会输出 -1 -1 -1
: 如果这里会影响,传的是*p的值,那应该会输出 -1 -2 -2
: 如果这里会影响,传的是p的值 ,那就是 -1 -1 -3
: 哪个才对呢?我对类别的应用觉得很头大...
都不对
--
欢迎大家一起加入Intel Philanthropic Peer-to-Peer Program !!!
这项「英特尔慈善『点对点连线』计画」旨在经由网际网路,把数百万部个人电脑连结
起来,加速研发治疗白血球过多症(血癌)的药物,从而把新药上市的需要时间缩短约
一半。对本计画有兴趣者,可以到http://www.grid.org/download/gold/download.htm
网站,下载该程式。
一旦一批资料处理完毕,下次电脑连接上网际网路时,不论经由宽频或拨接,电脑便会
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.201.17
1F:推 Elfiend:感谢~大概懂了。不过...金笛答案居然给-1-1-3... 220.139.148.72 05/25