作者Elfiend (小孩)
看板TransCSI
標題[問題] 程式:C++ 台大90 第五、六題
時間Mon May 23 18:06:52 2005
台大90年度轉學考計概第六題
1 #include <iostream>
2 using namespace std.
3 class Ex {
4 public:
5 Ex(){p = new int;}
6 void set(int i){*p = i;}
7 int get(){return *p;}
8 private:
9 int *p;
10 }
11
12 int main(){
13 Ex test1,test2;
14 test1.set(-1);
15 cout<< test1.get() <<"";
16 test2.set(-2);
17 test1=test2
18 cout<< test1.get() <<"";
19 test2.set(-3);
20 cout<< test1.get() <<endl;
21 return 0;
22 }
=====================================
對類別的看法是→公有的:二個函數set(設值)get(取值)可以給其他使用
私有的: *p 內部自己使用的指標,不被外部程式影響
而我的問題是第17行:test1=test2
這個等號的意義是什麼???
如果私有的不被外部程式影響,那這個等號應該沒有作用,所以會輸出 -1 -1 -1
如果這裡會影響,傳的是*p的值,那應該會輸出 -1 -2 -2
如果這裡會影響,傳的是p的值 ,那就是 -1 -1 -3
哪個才對呢?我對類別的應用覺得很頭大...
台大90年度轉學考計概第五題
1 #include <iostream>
2 using namespace std;
3
4 int what( const char *s){
5 int j;
6 for(j=0; *s!='\0'; s++)++j
7 return j;
8 }
9
10 int main(){
11 char *st={"this is a test."};
12 cout << what(st);
13 return 0;
14 }
這題的問題是字串的儲存與應用方式
對於第六行的for裡 *s!='\0' s是指字串的開頭位置吧,
所以12行的st就是傳一個位置給what函數,
但是 4行的定義是 const char *s 這不是字串嗎?
傳一個位置過去,卻用字串的定義接受???
還有,如果第六行的*s是單指一個字母,那怎樣才是整個字串??
是我的哪個觀念出錯了???請幫忙指正,謝謝回應唷。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.131.77