![C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)周靄如【6 類與對象】_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/9406ef18-4c0c-442e-9875-7b08648c86bd/9406ef18-4c0c-442e-9875-7b08648c86bd1.gif)
![C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)周靄如【6 類與對象】_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/9406ef18-4c0c-442e-9875-7b08648c86bd/9406ef18-4c0c-442e-9875-7b08648c86bd2.gif)
![C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)周靄如【6 類與對象】_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/9406ef18-4c0c-442e-9875-7b08648c86bd/9406ef18-4c0c-442e-9875-7b08648c86bd3.gif)
![C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)周靄如【6 類與對象】_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/9406ef18-4c0c-442e-9875-7b08648c86bd/9406ef18-4c0c-442e-9875-7b08648c86bd4.gif)
![C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)周靄如【6 類與對象】_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/9406ef18-4c0c-442e-9875-7b08648c86bd/9406ef18-4c0c-442e-9875-7b08648c86bd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016第第6 6章章 類與對象類與對象 6.1 6.1 類與對類與對象象 6.2 6.2 構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù) 6.3 6.3 類的其他成員類的其他成員 6.4 6.4 類的包含類的包含 小結(jié)小結(jié)華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016 類(類(ClassClass)是面向?qū)ο蟪绦蛟O(shè)計(jì)()是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOPOOP)實(shí)現(xiàn)信息封裝的基礎(chǔ)。)實(shí)現(xiàn)信息封裝的基礎(chǔ)。 類是用戶定義類型,也稱為類類型類是
2、用戶定義類型,也稱為類類型 每個(gè)類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或傳遞消息的函數(shù)。類的每個(gè)類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或傳遞消息的函數(shù)。類的 實(shí)例稱為對象實(shí)例稱為對象第第6 6章章 類與對象類與對象 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016 面向?qū)ο缶幊痰某绦蚧締挝皇穷惷嫦驅(qū)ο缶幊痰某绦蚧締挝皇穷?類是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝類是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝 類的對象使用自己的方法完成對數(shù)據(jù)的操作類的對象使用自己的方法完成對數(shù)據(jù)的操作 類可以隱藏?cái)?shù)據(jù)和操作細(xì)節(jié),對象通過類接口與外部通信類可以隱藏?cái)?shù)據(jù)和操作細(xì)節(jié),對象通過類接口與外部通信 6.1 6.1 類與對
3、象類與對象 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1 類與對象/ 排序函數(shù)原型void Sort (int , int ) ; / 數(shù)組相加函數(shù)原型void Add ( int , int , int ) ; int main() int a 10 , b 10 ; . Sort ( a , 10 ) ; Sort ( b , 10 ) ; Add ( a , b , 10) ; .數(shù)組與數(shù)組類數(shù)組與數(shù)組類華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016class Array/定義數(shù)組類 int *ap ; int len
4、; public: Array( int size )/ 建立數(shù)組 len= size ; ap = new int size ; void Sort ( ) ;/ 排序 / 重載算符 +函數(shù) Array operaor + (const Array & other) ; int main() Array a(10) , b(10) ;/ 聲明對象 . a . Sort() ; b . Sort() ; / 調(diào)用排序方法 a = a + b ;/ 數(shù)組相加 ./ 排序函數(shù)原型void Sort (int , int ) ; / 數(shù)組相加函數(shù)原型void Add ( int , int
5、, int ) ; int main() int a 10 , b 10 ; . Sort ( a , 10 ) ; Sort ( b , 10 ) ; Add ( a , b , 10) ; .數(shù)組與數(shù)組類數(shù)組與數(shù)組類6.1 類與對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016class Array/定義數(shù)組類 int *ap ; int len ; public: Array( int size )/ 建立數(shù)組 len= size ; ap = new int size ; void Sort ( ) ;/ 排序 / 重載算符 +函數(shù) Array opera
6、or + (const Array & other) ; int main() Array a(10) , b(10) ;/ 聲明對象 . a . Sort() ; b . Sort() ; / 調(diào)用排序方法 a = a + b ;/ 數(shù)組相加 ./ 排序函數(shù)原型void Sort (int , int ) ; / 數(shù)組相加函數(shù)原型void Add ( int , int , int ) ; int main() int a 10 , b 10 ; . Sort ( a , 10 ) ; Sort ( b , 10 ) ; Add ( a , b , 10) ; .數(shù)組與數(shù)組類數(shù)組與數(shù)
7、組類class Array/定義數(shù)組類 int *ap ; int len ; public: Array( int size )/ 建立數(shù)組 len= size ; ap = new int size ; void Sort ( ) ;/ 排序 / 重載算符 +函數(shù) Array operaor + (const Array & other) ;類是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝6.1 類與對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016class Array/定義數(shù)組類 int *ap ; int len ; public: Array( int size
8、 )/ 建立數(shù)組 len= size ; ap = new int size ; void Sort ( ) ;/ 排序 / 重載算符 +函數(shù) Array operaor + (const Array & other) ; int main() Array a(10) , b(10) ;/ 聲明對象 . a . Sort() ; b . Sort() ; / 調(diào)用排序方法 a = a + b ;/ 數(shù)組相加 ./ 排序函數(shù)原型void Sort (int , int ) ; / 數(shù)組相加函數(shù)原型void Add ( int , int , int ) ; int main() int
9、a 10 , b 10 ; . Sort ( a , 10 ) ; Sort ( b , 10 ) ; Add ( a , b , 10) ; .數(shù)組與數(shù)組類數(shù)組與數(shù)組類對象使用自己的方法對數(shù)據(jù)操作6.1 類與對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1 類與對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 20162016class 鐘 private : 鐘的構(gòu)造; public : 讀取時(shí)間值讀取時(shí)間值 ; 調(diào)整時(shí)間值調(diào)整時(shí)間值 ;對象通過類接口與外部通信6.1 類與對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 2
10、01620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int mo
11、nth; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例6-1 一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4
12、= 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0
13、 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例6-1 一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ;
14、year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; yea
15、r = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;關(guān)鍵字關(guān)鍵字定義一個(gè)類定義一個(gè)類標(biāo)識符標(biāo)識符類名類名 class ,struct,union 都可以定義一個(gè)類:都可以定義一個(gè)類: class缺省說明時(shí),其成員被認(rèn)為缺省說明時(shí),其成員被認(rèn)為是私有的是私有的 struct 若不特別指出,其所有成員若不特別指出,其所有成
16、員都是公有的都是公有的 union其所有成員都是公有的,且其所有成員都是公有的,且不能更改不能更改華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 !=
17、0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate ; a.Set (10, 16, 2003) ; a.Print() ;Tdate 類型的一個(gè)類型的一個(gè)對象(實(shí)例)對象(實(shí)例)華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing namespace std ;clas
18、s Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ; 類由成員構(gòu)成
19、: 數(shù)據(jù)成員數(shù)據(jù)成員描述對象的屬性 成員函數(shù)成員函數(shù)描述對象的方法華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 =
20、 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;int month; int day; int year;數(shù)據(jù)成員數(shù)據(jù)成員華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing namespace std ;class Tda
21、te public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ; void Set(in
22、t m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; 類中定義成員函數(shù)類中定義成員函數(shù)內(nèi)聯(lián)函數(shù)處理內(nèi)聯(lián)函數(shù)處理華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例例6-1 一個(gè)類的例子一個(gè)類的例子#includeusing na
23、mespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a
24、.Print() ; void Set(int m, int d, int y ) ; int IsLeapYear() ; void Print() ;在類外定義在類外定義成員函數(shù)成員函數(shù) void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year.month.dayendl ; 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄
25、如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例6-1 一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int mon
26、th; int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;成員的性質(zhì)由關(guān)鍵字成員的性質(zhì)由關(guān)鍵字public、protected、private 決定決定公有公有 公有段的成員是提供給外部的接口公有段的成員是提供給外部的接口 保護(hù)保護(hù) 保護(hù)段成員在該類和它的派生類中可見保護(hù)段成員在該類和它的派生類中可見 私有私有 私有段成員僅在類中可見私有段成員僅在類中可見各段中既可以包含數(shù)據(jù)成員,也可以包含成員函數(shù)各段中既可以包含數(shù)據(jù)成員,也可以包含成員函數(shù)華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如
27、 201620166.1.1 6.1.1 定義類和對象定義類和對象 / 例6-1 一個(gè)類的例子#includeusing namespace std ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month;
28、int day; int year;int main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ; class 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成
29、員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中例:例: class link link * next ; ;/ 聲明一個(gè)指向聲明一個(gè)指向link類類型的指針類類型的指針華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成員和成員
30、函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中例:例: class X ; class Y X dataMember ; ;/ 聲明一個(gè)類類型數(shù)據(jù)成員聲明一個(gè)類類型數(shù)據(jù)成員華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)
31、公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中例:例: class dataMember ; ;/ 錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤無窮遞歸結(jié)構(gòu)無窮遞歸結(jié)構(gòu)華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; pro
32、tected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中2. 類可以無名,用于直接聲明對象類可以無名,用于直接聲明對象例:例: class mydate ;/ 直接直接聲明一個(gè)對象聲明一個(gè)對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ;
33、protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中2. 類可以無名,用于直接聲明對象類可以無名,用于直接聲明對象/例例6-2#includeusing namespace std ;class empty ;int main() empty e1 ; cout &e1 = &e1 endl ; cout sizeof e1 = sizeof(e1) endl ; 3. 類是一個(gè)程序包??梢灾挥袛?shù)據(jù)成員或只有成員函數(shù),或
34、者為空。類是一個(gè)程序包。可以只有數(shù)據(jù)成員或只有成員函數(shù),或者為空。 一個(gè)空類一個(gè)空類華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: class 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中2. 類可以無名,用于直接聲明對象類可以無名,
35、用于直接聲明對象3. 類是一個(gè)程序包??梢灾挥袛?shù)據(jù)成員或只有成員函數(shù),或者為空。類是一個(gè)程序包。可以只有數(shù)據(jù)成員或只有成員函數(shù),或者為空。 /例例6-2#includeusing namespace std ;class empty ;int main() empty e1 ; cout &e1 = &e1 endl ; cout sizeof e1 = sizeof(e1) endl ; 空類對象空類對象華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.1 6.1.1 定義類和對象定義類和對象 類說明的一般形式為:類說明的一般形式為: cla
36、ss 類名類名 public:公有段數(shù)據(jù)成員和成員函數(shù)公有段數(shù)據(jù)成員和成員函數(shù) ; protected: 保護(hù)段數(shù)據(jù)成員和成員函數(shù)保護(hù)段數(shù)據(jù)成員和成員函數(shù) ; private:私有數(shù)據(jù)成員和成員函數(shù)私有數(shù)據(jù)成員和成員函數(shù) ; ; 1. 允許已定義類名出現(xiàn)在類的說明中允許已定義類名出現(xiàn)在類的說明中2. 類可以無名,用于直接聲明對象類可以無名,用于直接聲明對象/例例6-2#includeusing namespace std ;class empty ;int main() empty e1 ; cout &e1 = &e1 endl ; cout sizeof e1 = size
37、of(e1) ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-3 訪問對象的公有成員訪問對象的公有成員 #includeusing namespace std ;class Tclass public: int x,y ; void print() cout x “,” ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-3 訪問對象的公有成員訪問對象的公有成員#includeusing namespace std ;class Tclass: int x,y ; void print()
38、cout x “,” ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-3 訪問對象的公有成員訪問對象的公有成員#includeusing namespace std ;class Tclass: int x,y ; void print() cout x “,” ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-4 用指針訪問對象成員用指針訪問對象成員 #includeusing namespace std ;class Tclass public : int x, y ; void pr
39、int() cout x , y x + ptf-y ) ; int main() Tclass test, * pt = new(Tclass) ; pt-x = 100 ; pt-y = 200 ; pt-print() ; test.x = 150 ; test.y = 450 ; test.print() ; cout x+y= ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-4 用指針訪問對象成員用指針訪問對象成員 #includeusing namespace std ;class Tclass public : int x,
40、y ; void print() cout x , y x + ptf-y ) ; int main() Tclass test, * pt = ; pt-x = 100 ; pt-y = 200 ; pt-print() ; test.x = 150 ; test.y = 450 ; test.print() ; cout x+y= ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-4 用指針訪問對象成員用指針訪問對象成員 #includeusing namespace std ;class Tclass public : int x, y
41、 ; void print() cout x , y x + ptf-y ) ; int main() Tclass test, * pt = new(Tclass) ; = 100 ; = 200 ; ; test.x = 150 ; test.y = 450 ; test.print() ; cout x+y= ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-4 用指針訪問對象成員用指針訪問對象成員 #includeusing namespace std ;class Tclass public : int x, y ; void pr
42、int() cout x , y x + ptf-y ) ; int main() Tclass test, * pt = new(Tclass) ; pt-x = 100 ; pt-y = 200 ; pt-print() ; test.x = 150 ; test.y = 450 ; test.print() ; cout x+y= ” 運(yùn)算符訪問對象成員運(yùn)算符訪問對象成員 6.1.2 6.1.2 訪問對象成員訪問對象成員 /例例6-4 用指針訪問對象成員用指針訪問對象成員 #includeusing namespace std ;class Tclass public : int x,
43、y ; void print() cout x , y x + ptf-y ) ; int main() Tclass test, * pt = new(Tclass) ; pt-x = 100 ; pt-y = 200 ; pt-print() ; test.x = 150 ; test.y = 450 ; test.print() ; cout x+y= add() ;向函數(shù)向函數(shù)傳遞對象地址傳遞對象地址 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace
44、 std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;華南理工大學(xué)計(jì)算
45、機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY (
46、 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY
47、() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #in
48、clude /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ;
49、obj3 . printXY () ;obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y向哪個(gè)對象向哪個(gè)對象的數(shù)據(jù)成員賦值?的數(shù)據(jù)成員賦值? 華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y x = a ; this-y =
50、b ; obj1 . setXY ( 10, 15, &obj1 ) ;成員函數(shù)隱含定義成員函數(shù)隱含定義 this 指針指針接受調(diào)用對象的地址接受調(diào)用對象的地址華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y x = a ; this-y
51、= b ; this 指針不能顯式聲明指針不能顯式聲明華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y x = a ; this-y = b ; this 指針不能顯式聲明指針不能顯式聲明可以顯式使用可以顯式使用obj1 . setXY ( 10,
52、 15, &obj1 ) ;華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . p
53、rintXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y通過調(diào)用函數(shù)的對象通過調(diào)用函數(shù)的對象this 指針獲取對象地址指針獲取對象地址華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ;
54、 public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;1015obj1.xobj1.yobj2.xobj2.yobj3.xobj
55、3.y華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj
56、2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;1015obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b
57、 ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;1015obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y在在 obj1 上操作上操作 10 , 15 20 , 25 30 , 35華南理工大學(xué)計(jì)算機(jī)
58、學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY (
59、20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;1015obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y 10 , 15 20 , 25 30 , 35華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespace std ;class Simple int x, y ; public : void setXY ( int a, int b) x
60、 = a ; y = b ; void printXY() cout x , y endl ; ; ;int main() Simple obj1, obj2, obj3 ; obj1 . setXY ( 10, 15 ) ; obj1 . printXY () ; obj2 . setXY ( 20, 25 ) ; obj2 . printXY () ; obj3 . setXY ( 30, 35 ) ; obj3 . printXY () ;1015obj1.xobj1.yobj2.xobj2.yobj3.xobj3.y 10 , 15 20 , 25 30 , 35在在 obj2 上操作上操作華南理工大學(xué)計(jì)算機(jī)學(xué)院華南理工大學(xué)計(jì)算機(jī)學(xué)院 周靄如周靄如 201620166.1.3 this6.1.3 this指針指針 #include /例例6-5using namespa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 再生橡膠的再生工藝對環(huán)境影響評估考核試卷
- 2025-2030年數(shù)學(xué)題目解析器行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年即食魷魚絲企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 二零二五教育培訓(xùn)機(jī)構(gòu)股份合作合同樣本4篇
- 2025-2030年地震波傳播模擬軟件企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 聲學(xué)基礎(chǔ)與音響設(shè)備設(shè)計(jì)考核試卷
- 2025-2030年數(shù)字化酒店管理系統(tǒng)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年手術(shù)室廢物處理設(shè)備行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 城際鐵路旅客運(yùn)輸與鄉(xiāng)村振興戰(zhàn)略考核試卷
- 原油加工工藝的模擬與優(yōu)化軟件考核試卷
- 極簡統(tǒng)計(jì)學(xué)(中文版)
- 產(chǎn)品生產(chǎn)及供貨方案(2篇)
- 當(dāng)代世界經(jīng)濟(jì)與政治 第八版 課件 第六章 轉(zhuǎn)型國家的經(jīng)濟(jì)與政治
- 2024年長沙衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 2024年資格考試-對外漢語教師資格證筆試參考題庫含答案
- 2024年4月自考02382管理信息系統(tǒng)答案及評分參考
- 新物業(yè)項(xiàng)目設(shè)備檢查標(biāo)準(zhǔn)【物業(yè)管理經(jīng)驗(yàn)分享】
- 金屬硬度轉(zhuǎn)換表【HLD,HRC,HRB,HV,HB,HSD】
- GB/T 22076-2024氣動(dòng)圓柱形快換接頭
- (蘇版)初三化學(xué)上冊:第2單元課題1空氣
- 2023年12月廣東珠海市軌道交通局公開招聘工作人員1人筆試近6年高頻考題難、易錯(cuò)點(diǎn)薈萃答案帶詳解附后
評論
0/150
提交評論