第九章 物件導向-進階.

Slides:



Advertisements
Similar presentations
营养与辅食 ——10~12 个宝宝的喂养 主讲: Amy 老师 营养与辅食 ——10~12 个宝宝的喂养 主讲: Amy 老师.
Advertisements

妈妈宝宝小厨房 — 姜汤 主讲: Amy 老师. 主要材料:生姜、大枣、红 糖适量、水 1 、将姜、枣洗净,生姜改刀 2 、锅中放入姜,枣,水,大 火煮开后放入少许红糖, 再熬煮 5 分钟即可.
婴幼儿日常生活照料 —— 大小便规律的培养 主讲: Amy 老师. 美国 ★2岁或更大开始如厕训练,大多孩子在4~ 4 岁 半完成 ★坚决反对强制训练孩子大小便,反对对尿床的 孩子进行体罚和羞辱 ★5岁的孩子尿床是正常现象,批评会增强孩子 压力而适得其反.
第三讲 面向对象(上).
婴幼儿日常生活照料 ——游泳与抚触 主讲:Amy老师.
四資二甲 第三週作業 物件導向程式設計.
第一章 面向对象程序设计.
第6章 多态性与虚函数.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
類別與物件 Class & Object.
第八章 类和对象.
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
哈夫曼编码.
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
第3章 继承和派生.
西安交通大学 计算机教学实验中心 大学C++程序设计教程 西安交通大学 计算机教学实验中心
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第三章 C++中的C 面向对象程序设计(C++).
第一章 C++编程简介 丘志杰 电子科技大学 计算机学院 软件学院.
第四章 小技巧.
软件学院 张 慧 清华大学软件学院.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
Struct結構 迴圈
第十三讲 文件流与 输出输入重载.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
Oop8 function函式.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第三章 数据抽象.
字符串 (String) 字符串是 n (  0 ) 个字符的有限序列, 记作 S = “c1c2c3…cn” 其中,S 是串名字
Object-Oriented Programming in C++ 第二章 类和对象
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
資料結構簡介 綠園.
C++程序设计 吉林大学计算机科学与技术(软件)学院.
第二章 类型、对象、运算符和表达式.
C++程序设计基础 主讲人:谢昕 华东交通大学信息工程学院 第十~十二讲 多态性和虚函数 2005年春季学期.
Review 1~3.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第 9 章 建構函式與解構函式.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
谭浩强编著 C++面向对象程序设计 授课教师:姬广永 学习网站:
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++语言程序设计(第4版) 第七章 继承与派生 数学与统计科学学院 胡凤珠.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
Presentation transcript:

第九章 物件導向-進階

 9.1 “This” 指標 this 指標:  指向物件本身所在的位置: 當程式碼只有一份時,不同的物件需要 一個自己的指標指向自己,用以區別. Compiler會自己加入,this指標.

 9.1 “This” 指標 例: 編譯器會自己修改成 實際呼叫時 class String { char *data; ….. Void show( ) { cout << data;} } String s1=“Ken”, s2=“Sue”; s1.show( ); s2.show( ); void show( String *this) {cout << this ->data;} show(&s1); show(&s2); 實際呼叫時

 9.1 “This” 指標 例: 編譯器認得this / this指標的範例一 #include <iostream.h> class Baby { private : char Name[16]; // 注意這兒,我宣告的大小是16 public : void Demo() cout << "Address = " << this << endl; } }; // 主程式 void main() Baby Julia, Amy; Julia.Demo(); Amy.Demo(); 編譯器認得this

9.1 “This” 指標  結果: Address = 0x0064FDD8 Address = 0x0064FDE8

 9.1 “This” 指標 例: // this指標的範例二 #include <iostream.h> #include <string.h> class Baby { private : char Name[16]; public : Baby( char *name ) strcpy( this->Name, name ); } void Demo() cout << "我的名字叫" << this->Name << endl; };

 9.1 “This” 指標 例: // 主程式 void main( ) { // 主程式 void main( ) { Baby Julia( "Julia" ), Amy( "Amy" ); Julia.Demo( ); Amy.Demo( ); }

 9.1 “This” 指標 例: this的功能 // this指標的範例三 #include <iostream.h> class MYINT { private : int nData; public : MYINT( int data = 0 ) nData = data; } void Assign( MYINT a ) nData = a.nData; void Show( ) cout << nData << endl; } MYINT& Add1( ) { ++nData; return *this; }; // 主程式 void main() MYINT a = 5, b = 3; a.Assign( b.Add1( ) ); //相當於a = ++b; a.Show( ); //要顯示4在螢幕上

9.2 虛擬指標  例: 虛擬函數(virtual) 在編譯時就依宣告 的型別連接函數

9.2 虛擬指標  例: 虛擬函數(virtual) 在編譯時並不做連接 執行時才做 函數的連接

 9.2 虛擬指標 例: 虛擬函數(virtual)  Overloaded (重載) : 編譯時決定呼叫的函數  Polymorphism(多型): 執行時才決定呼叫的函數

 9.2 純粹虛擬函數 例: 純粹虛擬函數(abstract class) 不應該產生一個 instant為shape virtual viod Shape::Show( ) { cout<<“爸爸是抽象類別”<<endl; }

 9.2 純粹虛擬函數 例: 純粹虛擬函數(abstract class) ? Main( ) { Shape Graph; Graph.Show; }

 9.2 純粹虛擬函數 例: 純粹虛擬函數(abstract class) virtual viod Shape::Show( )=0 { cout<<“爸爸是抽象類別”<<endl; }

9.2 純粹虛擬函數  例: 純粹虛擬函數(abstract class)  Shape2.cpp

  9.2 純粹虛擬函數 9.2 純粹虛擬函數 例: 純粹虛擬函數(abstract class)  Baby.cpp

  9.2 純粹虛擬函數 9.2 純粹虛擬函數 例: 純粹虛擬函數(abstract class) vptr vFunc1 GrandFather::vFunc1( ) cData vFunc2 GrandFather::vFunc2( ) fGrandFather vptr vFunc1 GrandFather::vFunc1( ) cData vFunc2 Father::vFunc2( ) fGrandFather fFather

  9.3 friend 函數 例: friend 函數 class A { private: int privateA; } class B A memberA; public: viod Demo( ) { memberA.privateA=5;} };

  9.3 friend 函數 例: friend 函數 class A { private: friend class B; int privateA; } class B A memberA; public: viod Demo( ) { memberA.privateA=5;} };

  9.3 friend 函數 例: friend 函數 calss A { private: int privateA; public: friend void Assign( A Data1, A Data2) Data1.privateA=Data2.private2; }