精華區beta CompBook 關於我們 聯絡資訊
C++ Primer 答客問 (12) 侯捷 jjhou@ccca.nctu.edu.tw 1999.10.30 第一次發表於 清大.楓橋驛站(140.114.87.5).電腦書訊版(Computer/CompBook) 本文將於日後整理於 侯捷網站/作品勘誤/C++ Primer 中文版/答客問 侯捷網站:www.jjhou.com ---------------------------------------------------------------- Richard wrote : (1999/10/30) > 在 "C++ PRIMER 中文版" 83頁 5行 > int month; > 說 變數 month 是物件 (object) > 物件有:屬性(property), 方法(method), 事件(event) > 請問 整數變數 month 的 屬性(property), 方法(method), 事件(event) 是 ? 侯捷回覆: 您說錯頁次了,我想您指的是 85 頁。 把根據 C++ 內建型別(build-in types)而宣告(或定義)出來的 「變數」說成「物件」(object),是一種比較廣義、且更具一致性 的說法。例如: int i(5); // 以 5 做為 i 的初值。類似 constructor 的用法。 int j = i + 3; // int type 擁有 overloaded operator= int k = i * 3; // int type 擁有 overloaded operator* 以上形式,都與 C++ object 相彷。故曰 i, j, k 為 objects。 您問: > 物件有:屬性(property), 方法(method), 事件(event) > 請問 整數變數 month 的 屬性(property), 方法(method), 事件(event) 是 ? 以目前習慣用詞而言,我想恐怕 PME(Property, Method, Event) 是比較偏向用於 software component。對 C++ class 而言, 如果說 int 是一種 class type 的話,那麼其 property 便是 int 內容,而其 method 則是各種可施加於其上的 動作如 +, - , *, / 等等(可視為 overloaded operators)。 至於 event,唔,這個嘛… 在OO 古典用詞裡,event 的意思好像是:「喚起某個 class 的 method,我們便說是送給該 class (object) object 一個 event」。 如果是這樣的話,那麼可以說 j = i + 3; 這行便是送出一個 event 給 int type 的 operator+。 印象中好像「送出一個 event」和「送出一個 message 同義」。 在 Scott Meyers 的 More Effective C++ p.230 甚至是這樣說: what C++ programmers know as a virtual function call is termed a "message dispatch"。 以上關於 event 和 message 的名詞意義,我不是很有把握。 在 C++/OOP 方面,我個人對實際面比較感興趣,對於 古典名詞(尤其是衍生自過去傳統 OO 基本教義派的名詞) 鑽研得少。所以,見笑了。 查了一下 The C++ Programming Language 和 C++ Primer 兩本書 的索引,前者雖然有 event 這個字,但與 object 毫無干係; 後者則是完全沒有收錄這個字。 --- the end  -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw