第1講C與C語言的區(qū)別_第1頁
第1講C與C語言的區(qū)別_第2頁
第1講C與C語言的區(qū)別_第3頁
第1講C與C語言的區(qū)別_第4頁
第1講C與C語言的區(qū)別_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計與

VisualC++

本課程的意義&&未來職業(yè)面向?qū)ο蟪绦蛟O(shè)計田宜平電話:Email:中國地質(zhì)大學計算機學院信息所武漢地大坤迪科技有限公司教材:《VisualC++面向?qū)ο蟪绦蛟O(shè)計》

戴光明李向編著中山大學出版社2005-11推薦參考教材1.《實用VisualC++6.0教程》[美]JonBates,TimTompkins著何健輝董方鵬等譯2.《C++面向?qū)ο蟪绦蛟O(shè)計教程》陳維興林小茶編著3.《C++程序設(shè)計教程》錢能編著清華大學出版社考試形式

一、交編程報告題目不固定(三種類型)

1.布置

2.你感興趣的

3.你的課題中的一個問題要求:源程序和報告用Email交二、平時成績?nèi)?、筆試面向?qū)ο蟪绦蛟O(shè)計的主要內(nèi)容第一部分C++語言基礎(chǔ)知識(預備知識)主要介紹C++語言與C語言不同的內(nèi)容第二部分面向?qū)ο蟪绦蛟O(shè)計(重點內(nèi)容)主要講述面向?qū)ο蟪绦蛟O(shè)計的基本思想與原理第三部分面向?qū)ο蟪绦蛟O(shè)計實例(實踐操作主要講解MFCWindows編程和數(shù)據(jù)庫編程等實例第一部分C++語言概述1.1C++語言的起源和特點1.2C++語言與C語言的關(guān)系1.3C++語言展望1.1.1C++語言的起源1、C++語言是從C語言繼承來的,主要表現(xiàn)在語句形式、模塊化程序設(shè)計2、C語言對大而復雜的系統(tǒng)是力不從心的3、80年Bell實驗室改進ANSIC產(chǎn)生C++語言(ANSL:美國國家標準研究所)1.1.2C++語言的特點1、C++語言是支持面向?qū)ο蟮脑O(shè)計語言

把具有共同特征和行為的實體的集合歸納成類,程序是相互聯(lián)系的離散對象的集合2、封裝性:通過類,將數(shù)據(jù)和操作封裝3、繼承性:原有C++代碼方便移植新程序4、多態(tài)性:相似而性質(zhì)不同的操作有相同名稱(如和操作有整數(shù)和與矢量和)1.2C++語言與C語言的關(guān)系1.2.1C++語言與C語言的聯(lián)系C語言的特點:1、它是一種結(jié)構(gòu)化程序設(shè)計語言2、它可以部分代替匯編語言3、它提供了豐富的數(shù)據(jù)類型和運算1.2C++語言與C語言的關(guān)系1.2.2C++語言與C的主要區(qū)別1、C++語言引進了類的概念,而C語言的結(jié)構(gòu)只是數(shù)據(jù)的集合2、C++語言沿用了C語言的結(jié)構(gòu)3、C++語言新增加的關(guān)鍵字classprivate,protected,publicthisnewdeletefriendoperateinlinevirtual1.2C++語言與C語言的關(guān)系1.2.3C++語言與C的細小區(qū)別1、C++語言保留了C的注釋/**/增加行注釋//2、const關(guān)鍵字#defineNumber1constNumber1它們功能相同,但后者編譯要進行嚴格的類型檢查。在C++都用const例如:C++:constintNumber=1,n=10;voidmain(){ inta;

constint*p; p=&Number; p=&n; *p=1;//錯誤 intn1=3;intconstn2=5;int*constpn=&n1;

pn=&n2;//錯誤*pn=6;//正確}常指針

使用const修飾指針時,由于const的位置不同,而含意不同。下面舉兩個例子,說明它們的區(qū)別。

(1).若聲明指針常量,則指針pn所指向的變量是可以更新的,不可更新的是常量指針pn所指的方向。例:intn1=3;intconstn2=5;int*constpn=&n1;

pn=&n2;//錯誤*pn=6;//正確(2).若聲明為指向常量的指針,則指針pn所指向的常量是不可以更新的,但可更新的是指針pn所指的方向。例:intn1=3;intconstn2=5;constint*pn=&n1;

pn=&n2;//正確*pn=6;//錯誤1.2.3C++語言與C的細小區(qū)別3、構(gòu)造變量的說明不必在之前加struct例如:C:structAstructaS;(結(jié)構(gòu))unionAunionaU;(聯(lián)合)enumBoolaB;(枚舉)C++:AstructaS;(結(jié)構(gòu))AunionaU;(聯(lián)合)BoolaB;(枚舉)4、變量的說明可放在程序任何位置例如(forinti=0;i<100;i++)1.2.3C++語言與C的細小區(qū)別5、域運算符:有全局作用域,文件作用域,類作用域,函數(shù)作用域。通過“::”域限定符標識。例:inti; main() {inti; i=5;//對局部量i ::i=10;//對全局量i }//“::”域限定符。1.2.3C++語言與C的細小區(qū)別6、輸入/輸出C++:cout<<"Welcome!";C:printf("Welcome!");C++:cin>>a;C:scanf("%d",&a);C++:cout<<a<<endl;C:printf("%d\n",a);C++:#include<iostream.h>C:#include<stdio.h>1.2.3C++語言與C的細小區(qū)別7、動態(tài)單元C:#include<alloc.h>float*p;p=(float*)malloc(sizeof(float));freep;q=(int*)calloc(10,sizeof(int));

C++:float*p;p=new(float);deletep;q=newint[10];#include<iostream.h>//例子example1.cppvoidmain(){ inti,m,len; int*p; cout<<"inputnumberofdata:"<<endl; cin>>m; p=newint[m]; if(p==NULL) {cout<<"fail!!!";return;} cout<<"inputdata"<<endl; for(i=0;i<m;i++)cin>>p[i]; len=0;cout<<"inputdata"<<endl; for(i=0;i<m;i++)len+=p[i]*p[i]; cout<<"sqr_sum="<<len<<endl; deletep;}1.2.3C++語言與C的細小區(qū)別8、引用與引用調(diào)用引用為一個對象產(chǎn)生第二個名稱,引用本身不是一個變量,只是一個變量的別名。定義如下:類型說明&引用=被引用的變量名;如:類型說明&A=B;我們稱A是B的引用。引用的一些規(guī)則如下:

(1)引用被創(chuàng)建的同時必須被初始化(指針則可以在任何時候被初始化)。

(2)不能有NULL引用,引用必須與合法的存儲單元關(guān)聯(lián)(指針則可以是NULL)。

(3)一旦引用被初始化,就不能改變引用的關(guān)系(指針則可以隨時改變所指的對象)。變量引用:以下示例程序中,k被初始化為i的引用。語句k=j并不能將k修改成為j的引用,只是把k的值改變成為6。由于k是i的引用,所以i的值也變成了6。

inti=5;

intj=6;

int&k=i;

k=j;//k和i的值都變成了6;

按引用傳遞就是封裝了的按指針傳遞!inttest(int&a,int*b);其中a為按引用傳遞,b為按指針傳遞!都可以修改原參數(shù)的值,如 inta1=10; intc=5; int*b1=&c; test(a1,b1);函數(shù)里面就可修改原變量a1和c的值.只不過在test()中用a=20就可以修改a1的值,而需要*b=30修改c的值??!

會發(fā)現(xiàn)“引用傳遞”的性質(zhì)象“指針傳遞”,而書寫方式象“值傳遞”。實際上“引用”可以做的任何事情“指針”也都能夠做,為什么還要“引用”這東西?

答案是“用適當?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄?/p>

指針能夠毫無約束地操作內(nèi)存中的如何東西,盡管指針功能強大,但是非常危險。就象一把刀,它可以用來砍樹、裁紙、修指甲、理發(fā)等等,誰敢這樣用?

如果的確只需要借用一下某個對象的“別名”,那么就用“引用”,而不要用“指針”,以免發(fā)生意外。1.2.3C++語言與C的細小區(qū)別9、函數(shù)重載----靜態(tài)多態(tài)性函數(shù)的重載是面向?qū)ο蟪绦蛟O(shè)計的多態(tài)性的實現(xiàn),重載使得:在同一個函數(shù)名下,有該函數(shù)的多個具體實現(xiàn);不同的具體實現(xiàn)有不同參數(shù)列表;在函數(shù)被調(diào)用時,編譯器通過對函數(shù)的實參和形參進行最大限度的匹配,選擇一個該函數(shù)的具體實現(xiàn)。

比方說加法,加法可以用于整數(shù)和有理數(shù)等在C++里可以用兩個函數(shù)來實現(xiàn)這個目的。intintadd(intv1,intv2){ returnv1+v2;}floatfloatadd(floatv1,floatv2){ returnv1+v2;}使用的方式是這樣的intia=1,ib=2,iab=0;floatfa=1.0,fb=2.0,fab=0.0;iab=intadd(ia,ib);fab=floatadd(fa,fb); 這樣看起來很不直觀,可讀性不強,我們的目的是讓人一眼就可以看出是在做相加運算。 兩個函數(shù)的返回值和參數(shù)并不一樣,這樣就可以區(qū)別開兩個不同的行為。這個特性可不可以利用呢?答案是可以,C++貼心的為我們做好了一切。原理很簡單,將函數(shù)的返回值和參數(shù)用一種可逆的編碼方法變成一個字符串,安插在函數(shù)名后面,編譯器向用戶屏蔽這一切,用戶可以用同一個名字來使用不同的函數(shù)。就是這樣intadd(in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論