|
 |
《挑戰(zhàn)30天
C/C++ 入門極限系列教程》引言 |
作為一個(gè)長篇的C++入門教程,無論如何也應(yīng)該有這么個(gè)引言,可是文筆并不好的我,想了很久也不知道該如何寫……
仔細(xì)想想,與其把這篇短文當(dāng)作教程的引言,其實(shí)它更應(yīng)該是一篇引導(dǎo)初學(xué)者步入C++殿堂的策論。
幾年并不算很長的編程經(jīng)驗(yàn),使我感觸頗深,痛苦迷茫,以及成功后的喜悅一直交替著伴隨我,愛好編程的我,在學(xué)習(xí)期間也被很多很多學(xué)習(xí)的困難疑惑所阻擋,甚至不只一次的想放棄……>>>閱讀全文 |
·C/C++中指針學(xué)習(xí)的兩個(gè)絕好的例子 |
指針學(xué)習(xí)不好關(guān)鍵是概念不清造成的,說的簡單點(diǎn)就是書沒有認(rèn)真看,指針的學(xué)習(xí)猶如人在學(xué)習(xí)饒口令不多看多學(xué)多練是不行的,下面是兩個(gè)很經(jīng)典的例子,很多書上都有,對于學(xué)習(xí)的重點(diǎn)在于理解*x和x的理解,他們并不相同,*x所表示的其實(shí)就是變量a本身,x表示的是變量a在內(nèi)存中的地址,如果想明白可以輸出觀察cout<<*x"|"x;,當(dāng)定義了int
*x;后對x=&a的理解的問題。仔細(xì)閱讀和聯(lián)系下面的兩個(gè)例子我想指針問題就不是難點(diǎn)了……>>>閱讀全文 |
·C++中的const限定修飾符 |
const修飾符可以把對象轉(zhuǎn)變成常數(shù)對象,什么意思呢? 意思就是說利用const進(jìn)行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數(shù)一樣使用……>>>閱讀全文 |
·C++下的引用類型 |
引用類型也稱別名,它是個(gè)很有趣的東西。在C++ 下你可以把它看作是另外的一種指針,通過引用類型我們同樣也可以間接的操作對象,引用類型主要是用在函數(shù)的形式參數(shù)上,通常我們使用它是把類對象傳遞給一個(gè)函數(shù)……>>>閱讀全文 |
·C++中布爾類型 |
布爾類型對象可以被賦予文字值true或者false,所對應(yīng)的關(guān)系就是真與假的概念。我們通常使用的方法是利用他來判斷條件的真與假……>>>閱讀全文 |
·關(guān)于C++中的內(nèi)聯(lián)函數(shù)(inline) |
在C++中,為了解決一些頻繁調(diào)用的小函數(shù)大量消耗?臻g或者是叫棧內(nèi)存的問題,特別的引入了inline修飾符,表示為內(nèi)聯(lián)函數(shù)?赡苷f到這里,很多人還不明白什么是棧空間,其實(shí)棧空間就是指放置程序的局部數(shù)據(jù)也就是函數(shù)內(nèi)數(shù)據(jù)的內(nèi)存空間,在系統(tǒng)下,?臻g是有限的,如果頻繁大量的使用就會(huì)造成因棧空間不足所造成的程序出錯(cuò)的問題,函數(shù)的死循環(huán)遞歸調(diào)用的最終結(jié)果就是導(dǎo)致棧內(nèi)存空間枯竭……>>>閱讀全文 |
·C++中關(guān)于堆內(nèi)存(heap)的概念和操作方法 |
堆內(nèi)存是什么呢?我們知道在C/C++中定義的數(shù)組大小必需要事先定義好,他們通常是分配在靜態(tài)內(nèi)存空間或者是在棧內(nèi)存空間內(nèi)的,但是在實(shí)際工作中,我們有時(shí)候卻需要?jiǎng)討B(tài)的為數(shù)組分配大小,在這里c庫中的malloc.h頭文件中的malloc()函數(shù)就為您解決了問題(bc或者是在老的標(biāo)準(zhǔn)中是alloc.h),它的函數(shù)原形是void*
malloc(size_t size),在動(dòng)態(tài)開辟的內(nèi)存中,在使用完后我們要使用free()函數(shù)來釋放動(dòng)態(tài)開辟的內(nèi)存空間……>>>閱讀全文 |
·C/C++中字符串常量的不相等性,以及字符串的copy |
在一個(gè)判斷兩個(gè)內(nèi)容為test的字符串常量是否相等的例子中,按照常理,應(yīng)該是相等的,這些在一些過程式語言中會(huì)得到相等的結(jié)論,但在C/C++卻不是這樣。為什么呢?答案在這里:因?yàn)樽址A看鎯?chǔ)在計(jì)算機(jī)內(nèi)存中,兩個(gè)字符串常量的地址均不相同,所以這樣的比較自然就不會(huì)得到我們所需要的結(jié)果,如果要進(jìn)行是否相等的比較應(yīng)該使用strcmp()這個(gè)涵數(shù)進(jìn)行比較……>>>閱讀全文 |
·C/C++中命令行參數(shù)的原理 |
很早以前的dos應(yīng)用程序中,我們經(jīng)常會(huì)用命令行參數(shù)執(zhí)行應(yīng)用程序例如: copy c:\1.txt
d:\ 。 在C/C++中,命令行參數(shù)的傳遞是利用main進(jìn)行形參傳遞實(shí)現(xiàn)的……>>>閱讀全文 |
·對前面對于引用的C++入門教程的補(bǔ)充說明 |
由于引用本身就是目標(biāo)的一個(gè)別名,引用本身的地址是一個(gè)沒有意義的值,所以在C++中是無法取得引用的內(nèi)存地址的。取引用的地址就是取目標(biāo)的地址,C++本身就根本不提供獲取引用內(nèi)存地址的方法……>>>閱讀全文 |
·C/C++中的結(jié)構(gòu)體 |
什么是結(jié)構(gòu)體? 簡單的來說,結(jié)構(gòu)體就是一個(gè)可以包含不同數(shù)據(jù)類型的一個(gè)結(jié)構(gòu),它是一種可以自己定義的數(shù)據(jù)類型,它的特點(diǎn)和數(shù)組主要有兩點(diǎn)不同,首先結(jié)構(gòu)體可以在一個(gè)結(jié)構(gòu)中聲明不同的數(shù)據(jù)類型,第二相同結(jié)構(gòu)的結(jié)構(gòu)體變量是可以相互賦值的……>>>閱讀全文 |
·C++面向?qū)ο蟮木幊倘腴T篇-----類(class) |
上兩篇內(nèi)容我們著重說了結(jié)構(gòu)體相關(guān)知識的操作。以后的內(nèi)容我們將逐步完全以C++作為主體了,這也意味著我們的教程正式進(jìn)入面向?qū)ο蟮木幊塘。前面的教程我已?jīng)再三說明,結(jié)構(gòu)體的掌握非常重要,重要在哪里呢?重要在結(jié)構(gòu)體和類有相同的特性,但又有很大的區(qū)別,類是構(gòu)成面向?qū)ο缶幊痰幕A(chǔ),但它是和結(jié)構(gòu)體有著極其密切的關(guān)系……>>>閱讀全文 |
·C++面向?qū)ο蟮木幊倘腴T篇--類構(gòu)造函數(shù)與析構(gòu)函數(shù) |
請注意,這一節(jié)內(nèi)容是C++的重點(diǎn),要特別注意!我們先說一下什么是構(gòu)造函數(shù)。上一個(gè)教程我們簡單說了關(guān)于類的一些基本內(nèi)容,對于類對象成員的初始化我們始終是建立成員函數(shù)然后手工調(diào)用該函數(shù)對成員進(jìn)行賦值的,那么在C++中對于類來說有沒有更方便的方式能夠在對象創(chuàng)建的時(shí)候就自動(dòng)初始化成員變量呢……>>>閱讀全文 |
·C++類對象的復(fù)制-拷貝構(gòu)造函數(shù)(深拷貝,淺拷貝) |
普通對象和類對象同為對象,他們之間的特性有相似之處也有不同之處,類對象內(nèi)部存在成員變量,而普通對象是沒有的,當(dāng)同樣的復(fù)制方法發(fā)生在不同的對象上的時(shí)候,那么系統(tǒng)對他們進(jìn)行的操作也是不一樣的,就類對象而言,相同類型的類對象是通過拷貝構(gòu)造函數(shù)來完成整個(gè)復(fù)制過程的……>>>閱讀全文 |
·C++友元的入門教程 |
友元能夠使得普通函數(shù)直接訪問類的保護(hù)數(shù)據(jù),避免了類成員函數(shù)的頻繁調(diào)用,可以節(jié)約處理器開銷,提高程序的效率,但矛盾的是,即使是最大限度的保護(hù),同樣也破壞了類的封裝特性,這即是友元的缺點(diǎn),在現(xiàn)在cpu速度越來越快的今天我們并不推薦使用它,但它作為C++一個(gè)必要的知識點(diǎn),一個(gè)完整的組成部分,我們還是需要討論一下的……>>>閱讀全文 |
·C++中類的繼承特性 |
整個(gè)C++程序設(shè)計(jì)全面圍繞面向?qū)ο蟮姆绞竭M(jìn)行,類的繼承特性是C++的一個(gè)非常非常重要的機(jī)制,繼承特性可以使一個(gè)新類獲得其父類的操作和數(shù)據(jù)結(jié)構(gòu),程序員只需在新類中增加原有類中沒有的成分?梢哉f這一章節(jié)的內(nèi)容是C++面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵……>>>閱讀全文 |
·C++類的多態(tài)與虛函數(shù)的使用 |
類的多態(tài)特性是支持面向?qū)ο蟮恼Z言最主要的特性,有過非面向?qū)ο笳Z言開發(fā)經(jīng)歷的人,通常對這一章節(jié)的內(nèi)容會(huì)覺得不習(xí)慣,因?yàn)楹芏嗳隋e(cuò)誤的認(rèn)為,支持類的封裝的語言就是支持面向?qū)ο蟮,其?shí)不然,Visual
BASIC 6.0 是典型的非面向?qū)ο蟮拈_發(fā)語言,但是它的確是支持類,支持類并不能說明就是支持面向?qū)ο螅軌蚪鉀Q多態(tài)問題的語言,才是真正支持面向?qū)ο蟮拈_發(fā)的語言,所以務(wù)必提醒有過其它非面向?qū)ο笳Z言基礎(chǔ)的讀者注意……>>>閱讀全文 |
·類的分解,抽象類與純虛函數(shù)的需要性 |
為了不模糊概念在這里我們就簡單的闡述一下類的分解,前面的教程我們著重講述了類的繼承,繼承的特點(diǎn)就是,派生類繼承基類的特性,進(jìn)行結(jié)構(gòu)擴(kuò)張,這種逐步擴(kuò)張,逐步在各派生類中分解彼此不同特性的過程其實(shí)就是類的分解……>>>閱讀全文 |
·C++類的多重繼承與虛擬繼承 |
在過去的學(xué)習(xí)中,我們始終接觸的單個(gè)類的繼承,但是在現(xiàn)實(shí)生活中,一些新事物往往會(huì)擁有兩個(gè)或者兩個(gè)以上事物的屬性,為了解決這個(gè)問題,C++引入了多重繼承的概念,C++允許為一個(gè)派生類指定多個(gè)基類,這樣的繼承結(jié)構(gòu)被稱做多重繼承……>>>閱讀全文 |
·C++中的運(yùn)算符重載函數(shù)及其值返回狀態(tài) |
運(yùn)算符重載是C++的重要組成部分,它可以讓程序更加的簡單易懂,簡單的運(yùn)算符使用可以使復(fù)雜函數(shù)的理解更直觀。對于普通對象來說我們很自然的會(huì)頻繁使用算數(shù)運(yùn)算符讓他們參與計(jì)算,但是對于自定義類的對象來說,我們是無論如何也不能阻止寫出像下面的代碼一樣的程序來的……>>>閱讀全文 |
·C++中利用構(gòu)造函數(shù)與無名對象簡化運(yùn)算符重載函數(shù) |
類的構(gòu)造函數(shù)起了顯式或者隱式轉(zhuǎn)換的作用,轉(zhuǎn)換過程實(shí)質(zhì)是產(chǎn)生一個(gè)類的無名對象,類的運(yùn)算符重載函數(shù)的參數(shù)就是這個(gè)無名對象的引用,所以參數(shù)的順序也不再是問題,代碼的運(yùn)行效率也得到提高,無需再定義只是參數(shù)順序不同,內(nèi)容重復(fù)的運(yùn)算符重載函數(shù)了……>>>閱讀全文 |
·C++運(yùn)算符重載轉(zhuǎn)換運(yùn)算符 |
為什么需要轉(zhuǎn)換運(yùn)算符? 大家知道對于內(nèi)置類型的數(shù)據(jù)我們可以通過強(qiáng)制轉(zhuǎn)換符的使用來轉(zhuǎn)換數(shù)據(jù),例如(int)2.1f;自定義類也是類型,那么自定義類的對象在很多情況下也需要支持此操作,C++提供了轉(zhuǎn)換運(yùn)算符重載函數(shù),它使得自定義類對象的強(qiáng)轉(zhuǎn)換成為可能……>>>閱讀全文 |
·C++運(yùn)算符重載賦值運(yùn)算符 |
自定義類的賦值運(yùn)算符重載函數(shù)的作用與內(nèi)置賦值運(yùn)算符的作用類似,但是要要注意的是,它與拷貝構(gòu)造函數(shù)與析構(gòu)函數(shù)一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定默認(rèn)的賦值運(yùn)算符重載函數(shù),那么系統(tǒng)將會(huì)自動(dòng)提供一個(gè)賦值運(yùn)算符重載函數(shù)……>>>閱讀全文 |
|
|