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