2008年7月7日

          規(guī)則:
          應(yīng)該將修飾符*  和 &緊靠變量名。例如:int  *a;  int &a;
          類的版式:
          類可以將數(shù)據(jù)和函數(shù)封裝起來(lái),其中函數(shù)是表示類的行為。也可以稱為是服務(wù)。類提供了關(guān)鍵字public ,protect ,private用于聲明哪些是公共的,哪些是保護(hù)的,哪些是 私有的。這樣可以讓類隱藏必要的東西。
          類的版式主要有兩種版式:
           (1):第一種將privte類型的數(shù)據(jù) 寫在前面,將public類型的數(shù)據(jù)寫在后面。采用這種版式的程序員主張“以數(shù)據(jù)為中心,”重點(diǎn)關(guān)注類的結(jié)構(gòu)。
           (2):第二種版式是將public類型寫在前面。將private寫在后面。這種版式的程序員主張“以行為為中心”。重點(diǎn)關(guān)注的是類應(yīng)該提供什么樣的接口(或者服務(wù))。
          我建議大家采用“以行為為中心的”的這種類的 版式。因?yàn)檫@樣設(shè)計(jì)類的時(shí)候。首先考慮的類可以提供什么洋的服務(wù)。而且方便用戶閱讀。

          posted @ 2008-08-05 15:24 清流琴音 閱讀(321) | 評(píng)論 (3)編輯 收藏
           
          空行:
          空行起著分隔程序段落的作用。
          (1):在給個(gè)類的聲明之后,函數(shù)的定義之后,都要加上空行。
          (2):在一個(gè)函數(shù)體內(nèi),邏輯關(guān)系密切的相關(guān)語(yǔ)句之間不可以加上空行。
          代碼行:
          (1):一行代碼指做一件事情。例如:只聲明一個(gè)變量。
          (2);if ,for while,do等語(yǔ)句自占一行。執(zhí)行語(yǔ)句不能緊跟其后。
          建議:在定義變量的同時(shí)。初始化該變量。
          如果變量的引用和定義的地方比較遠(yuǎn),那么很容易就會(huì)忘記了變量的初始化。如果引用了一個(gè)沒(méi)有初始化的變量,那么很有可能就會(huì)引起錯(cuò)誤。
          代碼行內(nèi)的空格:
          (1);關(guān)鍵字之后要有空格。向const ,virtual,case等關(guān)鍵字后面至少要留一個(gè)空格。否則的話,無(wú)法辨認(rèn)關(guān)鍵字。象if.while, for等關(guān)鍵字后面緊跟一個(gè)空格在跟“(”以顯示關(guān)鍵字的。
          (2):函數(shù)名之后不要留空格,緊跟“(”以和關(guān)鍵字區(qū)別。
          對(duì)齊:
          程序的分界符“{”和"}"應(yīng)該獨(dú)占一行并且位于一列。

          posted @ 2008-08-01 15:32 清流琴音 閱讀(137) | 評(píng)論 (0)編輯 收藏
           
          頭文件由三部分組成:
          1:頭文件開(kāi)頭出的版本和版權(quán)的 聲明。
          2:預(yù)處理塊。
          3:函數(shù)和類的結(jié)構(gòu)聲明等。
          規(guī)則:
          (1): 為了防止頭文件被重復(fù)的引用,應(yīng)該使用#ifndef/define/endif結(jié)構(gòu)產(chǎn)生與處理模塊。
          (2):用#include<filename.h>來(lái)引用標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從標(biāo)準(zhǔn)庫(kù)目錄開(kāi)始搜索)。
          (3):用#include"filename.h"來(lái)引用非標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從用戶工作的目錄開(kāi)始搜索)
          建議:頭文件中一般只存放“聲明”,而不存放“定義”

          定義文件的結(jié)構(gòu):

          定義文件的 內(nèi)容有由三部分組成:
          (1):  定義文件開(kāi)頭處的版本和版權(quán);
          (2):對(duì)一些頭文件的引用;
          (3):程序的實(shí)現(xiàn)體(包括數(shù)據(jù)和代碼)

          頭文件的作用:
          (1):通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合源代碼不能(或者不準(zhǔn))提供給用戶。只提供給用頭文件或者二進(jìn)制的庫(kù)。用戶只需要按照頭文件中的接口的聲明來(lái)調(diào)用庫(kù)功能。而不必關(guān)心接口是如何實(shí)現(xiàn)的。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。
          (2): 頭文件可以用來(lái)加強(qiáng)類型安全檢查。如果某個(gè)接口被實(shí)現(xiàn)或者被實(shí)用的時(shí)候,其方式和在頭文件中的聲明不一致的時(shí)候,編譯器就會(huì)報(bào)錯(cuò)。這一簡(jiǎn)單的規(guī)則可以大大的減輕程序員調(diào)試和改錯(cuò)的負(fù)擔(dān)。
          目錄結(jié)構(gòu):
          如果一個(gè)軟件的頭文件比較多(超過(guò)10個(gè)),就應(yīng)該把頭文件和定義文件分開(kāi)。分別保存在不同的目錄之中。以便于維護(hù)。
          例如:可以將頭文件保存在inluude目錄之中。將定義文件保存在source文件之中。
          如果某些頭文件是私有的,不會(huì)被程序直接引用,為了加強(qiáng)信息隱藏。那么可以把這些頭文件和定義文件放在同一目錄之中。
          posted @ 2008-08-01 15:13 清流琴音 閱讀(171) | 評(píng)論 (0)編輯 收藏
           
          指針中存有另一個(gè)對(duì)象的地址,使我們可以間接的操作這個(gè)對(duì)象。
          指針的典型用法是構(gòu)建一個(gè)連接的數(shù)據(jù)結(jié)構(gòu),例如:鏈表(list)和數(shù)(tree)。并管理在程序運(yùn)行的過(guò)程中動(dòng)態(tài)分配的對(duì)象。以及作為函數(shù)參數(shù)類型。主要用來(lái)傳遞數(shù)組和大型類的對(duì)象。
          每個(gè)指針都有相關(guān)的類型。
          不同數(shù)據(jù)類型的指針之間的區(qū)別不在于指針的表示上,也不是指針?biāo)钟械闹担ǖ刂罚!獙?duì)于所有類型的指針這兩個(gè)方面都是一樣的。不同之處在于指針?biāo)傅膶?duì)象的類型上。針織類型可以指定編譯器咋樣解釋特定內(nèi)存上的指定的內(nèi)容,以及該內(nèi)存區(qū)域因該跨越多少內(nèi)存單元。
          posted @ 2008-07-08 14:43 清流琴音 閱讀(180) | 評(píng)論 (0)編輯 收藏
           
          變量名,即變量的標(biāo)識(shí)符,可以由字符,數(shù)字,以及下劃線來(lái)組成。他必須以字符或者下劃線來(lái)開(kāi)頭,并且區(qū)分大小寫。
          語(yǔ)言本身沒(méi)有對(duì)變量名做什么限制。但是為了用戶著想,他不應(yīng)過(guò)長(zhǎng)。
          c++保留了一些詞用作關(guān)鍵字。關(guān)鍵字標(biāo)識(shí)符不能在作為標(biāo)識(shí)符在程序中使用了。
          對(duì)于命名對(duì)象有很多已經(jīng)普遍接受的習(xí)慣。主要考慮的因素的是程序的可讀性。
          第一:對(duì)象的命名一般用小寫。
          第二:標(biāo)識(shí)符通常用容易記憶的名字。
          第三:對(duì)于多詞構(gòu)成的標(biāo)識(shí)符一般在詞的中間加上下劃線。
          對(duì)象的定義:
          一個(gè)簡(jiǎn)單的對(duì)象的定義由一個(gè)類型指示符后面加上一個(gè)名字構(gòu)成,以分號(hào)結(jié)束。
          例如: int aaaaa;
          當(dāng)同類型的多個(gè)標(biāo)識(shí)符被定義的時(shí)候,我們可以在類型指示符后面用逗號(hào)隔開(kāi)。
          一個(gè)簡(jiǎn)單的定義指定了變量的類型和標(biāo)識(shí)符。他并不提供初始值。
          如果一個(gè)變量是在全局域(globe scope)中定義的,那么系統(tǒng)會(huì)保證給他一個(gè)初始值0。如果一個(gè)變量是在一個(gè)局部域中定義的,或者通過(guò)一個(gè)new 動(dòng)態(tài)分配的,那么系統(tǒng)不會(huì)向它提供初始值0。這些對(duì)象被稱為未初始化(uninitialized),未初始化的對(duì)象不是沒(méi)有值,而是對(duì)象的值未被定義。
          因?yàn)槭褂梦闯跏蓟膶?duì)象是個(gè)很常見(jiàn)的  錯(cuò)誤,并且很難被發(fā)現(xiàn)。所以建議為每個(gè)定義的對(duì)象進(jìn)行初始化。
          類機(jī)制通過(guò)缺省構(gòu)造函數(shù)提供了類對(duì)象的自動(dòng)初始化。
          例如:
          int  main()
          {
          int val;////////未被初始化的值。
          string  project;//////通過(guò)string類的缺省的構(gòu)造函數(shù)進(jìn)行了初始化。
          }


          val是一個(gè)未被初始化的局部變量。
          但是project是一個(gè)已經(jīng)被初始化的類對(duì)象——被string類缺省的構(gòu)造函數(shù)自動(dòng)初始化。
          初始化一個(gè)值可以在對(duì)象定義的時(shí)候進(jìn)行。
          c++支持兩種形式的初始化。
          第一種是使用賦值符號(hào)的現(xiàn)實(shí)的操作。
          如:
          int val=111;
          string  project="ssssss";
          隱式形式中,初始化值被放在括號(hào)中。
          int val(111);
          string project("sssssss");
          在對(duì)象的定義之中,當(dāng)對(duì)象的標(biāo)識(shí)符在定義中出現(xiàn)后,對(duì)象名馬上就是可見(jiàn)的了。因此用對(duì)象初始化他自己是合法的,只是這樣做不是明智的。
          例如:int val=val;///////合法,但是不是明智的。
          另外,每種內(nèi)置數(shù)據(jù)類型都支持一種特殊的構(gòu)造函數(shù)。可將對(duì)象初始化為0。
          /////設(shè)置val為0。設(shè)置dval為0.0。
          int val =int();
          double dval=double();
          下列的定義中:
          int()
          vector <int>ival(10);
          函數(shù)int()自動(dòng)被應(yīng)用到ival包含的10個(gè)元素上。
          對(duì)象可以用任意復(fù)雜的表達(dá)式來(lái)初始化,也可以用返回值
          posted @ 2008-07-08 14:26 清流琴音 閱讀(704) | 評(píng)論 (0)編輯 收藏
           
          變量為我們提供了一個(gè)有名字的內(nèi)存存貯空間。可以通過(guò)程序?qū)ζ溥M(jìn)行 讀寫,處理操作。
          c++中給個(gè)符號(hào)變量都有一個(gè)符號(hào)類型與之對(duì)應(yīng)。這個(gè)類型決定了相關(guān)內(nèi)存的大小,類型,布局,能夠存貯在該內(nèi)存值的范圍。以及可以以用到其上的操作集。我們也可以把變量說(shuō)成是對(duì)象(object)

          變量和文字常量都有存貯區(qū),并且都有相關(guān)的類型。區(qū)別在于變量是可以尋址的(adressable)常量文字是不可以尋址的(nonadressable),每一個(gè)變量都有兩個(gè)值與之聯(lián)系著,
          1:數(shù)據(jù)值。存貯在內(nèi)存的某個(gè)存貯區(qū)之中。有時(shí)候這個(gè)數(shù)據(jù)值也被稱為是右值(rvalue).我們可以認(rèn)為右值是被讀取的值。文字常量和變量都可以被用來(lái)做右值。
          2:它的地址值。即存貯它數(shù)據(jù)值的那塊內(nèi)存的地址。它有時(shí)候被稱為左值(lvalue)。我們也可以認(rèn)為左值的意思是位置值。文字常量不能被用作左值。
          變量的定義會(huì)引起相關(guān)內(nèi)存的分配。因?yàn)橐粋€(gè)對(duì)象只能有一個(gè)存貯位置,所以一個(gè)對(duì)象只能被定義一次。如果在一個(gè)文件中定義的對(duì)象需要在另一個(gè)文件中被訪問(wèn),那么就會(huì)出現(xiàn)問(wèn)題。
          在c++中,對(duì)象在使用之前必須知道對(duì)象,引用一個(gè)未知的對(duì)象會(huì)引起編譯器的錯(cuò)誤。
          如果一個(gè)對(duì)象在另一個(gè)  文件中聲明著,我們想在這個(gè)文件中來(lái)使用這個(gè)對(duì)象,但是又不能在這個(gè)文件中在聲明相同的對(duì)象。那么我們可以使用extern關(guān)鍵字來(lái)聲明這個(gè)對(duì)象。
          例如; file module.c
           string aaaaa;
          ///定義了對(duì)象aaaaa



          file  module1.c
          ////需要使用對(duì)象aaaaa.,
          ////聲明對(duì)象aaaaa,使程序知道它。但是又不能引入第二個(gè)定義。
          extern string aaaaa;
          對(duì)象聲明是使程序知道對(duì)象的類型和名字。它由關(guān)鍵字extern后面跟對(duì)象的類型和對(duì)象的名字構(gòu)成。
          聲明不是定義,不會(huì)引起內(nèi)存的分配。實(shí)際上它只是說(shuō)明了在程序之外的某處有這個(gè)變量的定義。
          雖然一個(gè)程序中只能包含一個(gè)對(duì)象的定義,但是可以包含很多的對(duì)象聲明。
          比較好的做法是:   不是在每個(gè)要使用的文件中都單獨(dú)提供一個(gè)聲明。而是在在頭文件中聲明這個(gè)對(duì)象,然后在需要聲明這個(gè)對(duì)象的時(shí)候包含這個(gè)頭文件就好了。按照這個(gè)做法。如果需要修改對(duì)象的聲明只需要修改一次。就能維持多個(gè)使用這個(gè)對(duì)象的聲明文件的一致性。



          posted @ 2008-07-08 10:49 清流琴音 閱讀(192) | 評(píng)論 (0)編輯 收藏
           

          面相對(duì)象的程序設(shè)計(jì)擴(kuò)展了給予對(duì)象的程序設(shè)計(jì)。可以提供類型和子類型的關(guān)系。這個(gè)是通過(guò)一種稱作繼承(inheritance)的機(jī)制來(lái)實(shí)現(xiàn)的。

          posted @ 2008-07-07 10:33 清流琴音 閱讀(182) | 評(píng)論 (0)編輯 收藏
           
          主站蜘蛛池模板: 清苑县| 平度市| 弋阳县| 关岭| 榕江县| 同德县| 吐鲁番市| 赤峰市| 珲春市| 武定县| 千阳县| 海丰县| 武穴市| 舒兰市| 托里县| 磐安县| 通渭县| 遂川县| 大厂| 宜州市| 巩义市| 敖汉旗| 潮安县| 石景山区| 巫溪县| 右玉县| 罗源县| 闽清县| 哈尔滨市| 宜昌市| 巧家县| 兴仁县| 中超| 长治市| 乾安县| 庆阳市| 西安市| 沂水县| 鸡东县| 卢龙县| 义马市|