第二章面向?qū)ο蟪绦蛟O(shè)計的概念_第1頁
第二章面向?qū)ο蟪绦蛟O(shè)計的概念_第2頁
第二章面向?qū)ο蟪绦蛟O(shè)計的概念_第3頁
第二章面向?qū)ο蟪绦蛟O(shè)計的概念_第4頁
第二章面向?qū)ο蟪绦蛟O(shè)計的概念_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第二章 面向?qū)ο蟪绦蛟O(shè)計的概念c與與c+的差別的差別引用引用類和對象類和對象構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)c對c的改進一般語法的改進指針和引用函數(shù)的改進c的輸入和輸出include “stdio.h”printf(“hello c”);scanf(“%d”,&sum);printf(“sum is %d”,sum); #include”iostream.h” cout sum; cout “sum is ” sum endl;一般語法的改進注釋/*.*/一般語法的改進變量定義變量定義可以位于程序中的任何地方下面的語句有問題嗎?下面的語句有問題嗎?for( int i=0; i10; i+

2、)int c; c*=2; int s; 一般語法的改進符號常量的定義define null 0#define length 100#define pi 3.1415926const int null=0const int length =100const double pi=3.1415926一般語法的改進強制轉(zhuǎn)換類型c的強制類型轉(zhuǎn)換法 (類型名)表達式函數(shù)表示法(僅限簡單類型) 類型名(表達式) int i=int(1.35); 一般語法的改進結(jié)構(gòu)體與枚舉類型的用戶標識名enum traffic red,green,yellow;struct student int num; char n

3、ame20;traffic light;student stu1; !不必在一個結(jié)構(gòu)體名之前加不必在一個結(jié)構(gòu)體名之前加struct,不用在一個枚舉類,不用在一個枚舉類型名之前加關(guān)鍵字型名之前加關(guān)鍵字enum。一般語法的改進動態(tài)內(nèi)存分配new int*p,*q,*s; p=new int; s=new int(200); q=new int10; delete delete p; delete q;一般語法的改進 #include “iostream.h” void main() int *p; p=new int; *p=10; cout*p; delete p; 引用類型的概念引用是指給對象

4、的地址取個別名,對引用的改動則是對目標的改動。 int int1; int &rint=int1;引用不是值,不占有存儲空間引用必須初始化,并且不再指向其他不同的變量指針和引用什么能被引用double &rr=1; double temp; temp=double(1); double& rr=temp;指針變量的引用 int *a; int*&p=a; int b=8; p=&b;指針和引用什么不能被引用void &a=3;int a10; int&ra10=a;int&ra=int;int&ri=null;指針和引用引用作為函數(shù)參數(shù)-地址傳遞指針的代碼可讀性差,指針作為參數(shù)傳遞,用戶調(diào)用知

5、道函數(shù)是如何工作的。解決大對象值傳遞會產(chǎn)生副本的問題程序清單2-3指針和引用引用作為函數(shù)參數(shù)-地址傳遞存在的問題 引用隱藏了函數(shù)所使用的參數(shù)傳遞的類型,應(yīng)避免重載匹配錯誤 void fn(int s); void fn(int&t);用const 限定引用 double fn(const double &pd)指針和引用函數(shù)原型例:int func(int,int);c+ 要求所有函數(shù)都有函數(shù)原型 程序的頂部 頭文件c提供更強的類型檢查,允許編譯程序?qū)ο铝星闆r報錯誤信息: 被調(diào)用函數(shù)參數(shù)類型定義和類型轉(zhuǎn)換非法 函數(shù)的參數(shù)個數(shù)不相符 函數(shù)不能返回預(yù)定的數(shù)據(jù)類型函數(shù)的改進內(nèi)置函數(shù)inline#in

6、clude iostream#include .h void main() void main() int int a(8),b(16),c; a(8),b(16),c; inline int max(int,intinline int max(int,int);); c=max(a,b); c=max(a,b); cout”c=”cendl cout”c=”cendl; ; int max(int x,intint max(int x,int y); y); cout”c=”cendl cout”c=”cendl; ; 內(nèi)置函數(shù)inline實質(zhì): 編譯器為inline 函數(shù)創(chuàng)建代碼,在每次碰

7、到該函數(shù)的調(diào)用都用相應(yīng)的一段代碼替換說明: 關(guān)鍵字inline一般放在函數(shù)聲明的前面 inline放在函數(shù)定義的前面時,函數(shù)定義要在調(diào)用函數(shù)的前面限制: 不能含有switch,while等復(fù)雜的結(jié)構(gòu)控制語句,遞歸函數(shù)不能被用作inline函數(shù)函數(shù)的改進inline 與宏定義宏所作的是機械代換,在參數(shù)為表達式時會產(chǎn)生不可預(yù)知的錯誤宏不能作類型檢查 define f(m) m*m 宏定義調(diào)用:f(5+5) 5+5*5+5函數(shù)的改進函數(shù)的默認參數(shù)可以在函數(shù)聲明時,對參數(shù)賦與默認值,調(diào)用沒有給出實參時,就使用默認值。 void delay(int loops=1000); void delay(int

8、 loops)if (loops=0) return; for(int i=0;ix p-y pai.x pai.y任務(wù)1類和對象的定義詳見實驗1構(gòu)造函數(shù)構(gòu)造函數(shù)的作用是構(gòu)造對象初始化形式在定義對象時,由應(yīng)用程序自動調(diào)用構(gòu)造函數(shù)是類的一個特殊成員函數(shù)它的函數(shù)名與類名相同, 沒有返回類型它可以有任意類型的參數(shù)可以重載默認構(gòu)造函數(shù)當類定義中沒有用戶定義的構(gòu)造函數(shù)時,系統(tǒng)自動產(chǎn)生一個無參數(shù)的構(gòu)造函數(shù),稱此構(gòu)造函數(shù)為默認構(gòu)造函數(shù)當定義一個對象時,默認構(gòu)造函數(shù)只是簡單地把對象中的每個成員初始化為0或空.構(gòu)造函數(shù)的類型無參構(gòu)造函數(shù) point(); point p1;帶參構(gòu)造函數(shù) point(int ,i

9、nt); point p2(100,200);復(fù)制構(gòu)造函數(shù) point(const point&); point p3(p2);拷貝構(gòu)造函數(shù)示例class a public: a(int); a(const a&,int i=1);main() a a(1); a b(a,0); a c=b;析構(gòu)函數(shù)析構(gòu)函數(shù)也是類的特殊成員函數(shù),它的函數(shù)名與類名相同,但它的名字前面有一個“”.它沒有參數(shù),沒有返回類型,而且不能重載.this 指針this 是一個指向調(diào)用該函數(shù)的對象的常量指針。成員函數(shù)可通過this指針直接使用同類的其它成員this指針是隱含的int get_length()return le

10、ngth;int get_length()return this-length;繼承在已有類的基礎(chǔ)上定義新類的過程稱為繼承。基類( base class)和派生類派生類的定義class : . . 繼承的方式繼承方式基類成員訪問權(quán)限派生類繼承到的訪問權(quán)限public(公有繼承)publicprotectedprivatepublicprotected不可訪問不可訪問protected(保護繼承)publicprotectedprivateprotectedprotected不可訪問不可訪問private( 私有繼承)publicprotectedprivateprivateprivate不可訪問不可訪問例2-22 單繼承示例多繼承派生類從多個基類派生,派生類具有多個基類的特性派生方法:class 派生類名:繼承方式1 基類名1,繼承方式2 基類名2,.繼承方式n 基類名n . .;例2-23 多繼承示例多態(tài)性在 基類和派生類中使用同樣的函數(shù)名而定義不同的操作,從而實現(xiàn)“一種接口,多種方法”。類型 靜態(tài)多態(tài)性: 編譯時實現(xiàn),通過重載 動態(tài)多態(tài)性: 運行時實現(xiàn),通過派生和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論