以下這個程式我想問的是
Count counter, 這行代表什麼意思呢??
還有void print() { cout << x << endl; }寫這行的意義在哪裡?
最後這邊*counterPtr = &counter,
&counterRef = counter;
我只知道第二行是counterRef的記憶體位子給了counter
可是我卻不知道第一行要怎麼解釋 或者誰的記憶體位子給了誰
謝謝各位了 問題有點多
#include
using std::cout;
using std::endl;
class Count {
public:
int x;
void print() { cout << x << endl; }
};
int main()
{
Count counter,
*counterPtr = &counter,
&counterRef = counter;
cout << "Assign 7 to x and print using the object's name: ";
counter.x = 7;
counter.print();
cout << "Assign 8 to x and print using a reference: ";
counterRef.x = 8;
counterRef.print();
cout << "Assign 10 to x and print using a pointer: ";
counterPtr->x = 10;
counterPtr->print();
return 0;
}
2007-01-06 20:27:17 · 2 個解答 · 發問者 funny 2 in 電腦與網際網路 ➔ 程式設計
可以問一下Count型別是指什麼嗎@@?
2007-01-06 21:33:42 · update #1
我還是不太了解void print() { cout << x << endl;
可以解釋一下嗎 謝謝了
2007-01-07 08:38:17 · update #2
意思是說Count 只能放一個變數
跟一個讓他輸出的函數而已了 是這樣嗎??
2007-01-07 08:43:11 · update #3
這應該算是一個不好的例子..我想它只是要示範用 物件本身,指標及 Reference 來操作物件而已.
把一開始拆成三行
Count counter; // 產生一個 Count(型別) 物件 counter(名字)
Count * counterPtr = &counter; // 產生一個 Count 的指標,並指向 counter
Count &counterRef = counter; // 這你應該已經清楚了 counterRef 其實就是 counter 的別名
counter 裡面包了一個 int x; 不過由於是 public 所以在 main() 裡直接寫 counter.x = 7; 就可以把 7 assign 給 counter.x;
它另外有一個 member function print(),也是 public 所以也可以用 counter.printf(); 來呼叫它,而 print() 的功能就是把 x 的值輸出到標準輸出而已,和你寫 cout << counter.x << endl; 一樣.
由於 counterRef 是 counter 的別名,所以可以想見你可以 counterRef.x = ####; counterRef.print(); 和在用 counter 時沒什麼差異.
但 counterPtr 是一個指標,它指向 counter 的[位址], 你要用時要加上 * (dereference) 才能用不過不是寫 *counterPtr.x = 10;
要寫成 (*counterPtr).x = 10; 因為 '.' 的優先權比較高 , 有另一個表示法 counterPtr->x = 10; 這樣寫就不用加 '( )' , 要用那個隨個人,不過用 -> 可以少打一個字 ( -> 叫做 arrow) . counterPtr->print(); 也一樣..我想應該不用解釋了.
2007-01-07 03:08:19 補充:
簡單的說就是自創的 data type , 不過它除了能放一個 int x, 還有一個 member function 可以輸出 x 的值. 如果你覺得 Count class 功能不夠,你可以對它擴充. 你這只是一個例子,在說明物件如何使用而已,實際上在設計時你要對你的需求下去分析,然後漸漸定義出 class 的 data member,member function 等等..最後才是寫實現它的 code , 以及測試除錯.
2007-01-07 13:57:20 補充:
應該不是說只能那樣...而是它被設計成那樣.
2007-01-06 20:53:44 · answer #1 · answered by 鳳琳 5 · 0⤊ 0⤋
class Count {....}
宣告一個 Count 的類別,含有一個資料成員x, 一個成員函式print
兩個成員的存取權是public...
print成員直接在宣告處給出定義,所以print是inline
Count counter,
*counterPtr = &counter,
&counterRef = counter;
這一段可以拆成這樣來看
Count counter; ///宣告並定義一個Count型別的變數
Count *counterPtr = &counter; ///宣告並定義一個Count型別的指標變數, 並將 counter變數設址給counterPtr
Count &counterRef = counter; ///宣告並定義一個Count型別的reference(參考)變數, 並將 counter變數設值給counterRef
也就是說這三個變數都操作同一塊記憶體(物件)(instance)
剩下的就是物件的操作了... ^^
2007-01-06 20:43:29 · answer #2 · answered by Awen 1 · 0⤊ 0⤋