看板 TransCSI 關於我們 聯絡資訊
台大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