- 2
- 0
- 约1.48千字
- 约 9页
- 2018-04-29 发布于河南
- 举报
THIS 的解析
this 的解析(補充) 井民全 隱含的 this 指標 每個 object 都有自己的一份 class data member Member function 可以不用 dot 運算子或 arraw 運算子,便可以存取自己的 class member. 隱含的 this 指標 例如 答案就是 this 指標 每個 class member function 都含有一個指標,用來指出其呼叫者 (一個 object)? this 當 object Jing 呼叫 setName() 時, this 指向的是 object Jing 當 object Jenny 呼叫 setName(), this 就指向 object Jenny 編譯器如何實作 this class member function的轉換 新增加一個額外的參數? this 明白的使用 this 存取 class member 編譯器如何實作 this Member function 的呼叫動作 Jing.SetName(“Jing2”); 改成 SetName(Jing,”Jing2”); 何時使用 this 指標 Copy method 何時使用 this 指標串接呼叫 int main(){ // … myScreen.clear().move(2,2).set(‘*’).display(); } 這一系列動作為: 清理 screen object myscreen 將游標移到 (2,2) 在該位置上設定 * 並且顯示結果 何時使用 this 指標串接呼叫 執行順序? 由左至右 clear() 必須傳回呼叫者 (一定要this) * * 參考資料: C++ Primer 中文版 pp.636-641 Name=Jing Age=18 Jing::Person Name=Jenny Age=18 Jenny::Person inline void Person::setName(string MyName){ Name=MyName; } 假設 object Jing 呼叫 setName 函式, 其中 setName 取用的 Name 為 Jing 所擁有 object Jenny 呼叫 setName 函式, 其中取用的 Name 為 Jenny 所擁有 奇怪! 同一份程式碼,為何一下取用 Jing 的資料 一下取用 Jenny 的資料 inline void Person::move(Person* this, string MyName){ this-Name=MyName; } 把object Jing 的位址放進去 void Person:: copy(const Person obj) { // 判斷是否為相同的 object 情況 if ( this ! = obj){ Name=obj.Name; Age=obj.Age; } } 相同的東西就不用複製了 myScreen.clear().move(2,2).set(‘*’).display(); Screen Screen:: clear( ) { // 清螢幕的程式 return *this; } 注意: 傳回型別為 reference type *
您可能关注的文档
最近下载
- 河北广谋新材料科技有限公司年产600万平方米复合革及隔音布、400万平方米新型复合网项目环境影响报告表.docx VIP
- 部编版语文五年级下册第七单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第六单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第五单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第四单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第三单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第二单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第一单元教材解读大单元集体备课.pptx VIP
- 车工 (数控车床)理论知识考核要素细目表四级.pdf VIP
- 本科课程《基础护理学》教案,第十二章给药.doc VIP
原创力文档

文档评论(0)