關於CLASS的疑問?? |
尚未結案
|
mavious
一般會員 發表:4 回覆:1 積分:1 註冊:2004-10-10 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
建議您看看任一本入門的 C++ 的書,一定會介紹。
基本
class ClassA { public: int aMemberVariable; int aMemberFunction(void) {return aMemberVariable;} virtual int aVirtualMemberFunction(int In){ return In; } virtual int aPureVirtualMemberFunction(void)=0; };如同變數及函式的名稱,就是這樣的定義,當然,變數型態及 變數名稱可以自定。 而 Pure Virtual Function 則表示此元件為 abstract class 無法有實體,也就是無法 new 一個出來。 而 Virtual Function 則表示,此函式可能由其繼承者 override。 class ClassB : public ClassA { public: int bMemberVariable; int bMemberFunction(void) {return bMemberVariable;} virtual int aVirtualMemberFunction(int In){ return In*10; } virtual int aPureVirtualMemberFunction(void){ return 100; } };此 ClassB 繼承自 ClassA 同時也有把 aPureVirtualMemberFunction 實作出來。所以此 ClassB 是可以被 new 出來的,例如: ClassB *B=new ClassB; B->bMemberVariable=1000; // 使用 ClassB 的 member variable B->aMemberVariable=10000; // 使用 ClassA 的 member variable if(B->bMemberFunction()==B->aMemberFunction()) // 叫用 member function ShowMessage("1000==10000 !!"); if(B->aVirtualMemberFunction(10)==B->aPureVirtualMemberFunction()) ShowMessage("We are the same!?");B->aVirtualMemberFunction(10) 它的回傳值是 100,因為它叫用的是 ClassB 內同名已 override ClassA 的函式。 還是一句,建議您看看任一本入門的 C 的書,一定會介紹得很詳細。 吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP OpenPLC - IEC 61131-3 geOShell XP Like 中文版
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |