乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      計算機等級考試二級C++考點分析之類和對象

       曾經(jīng)艱難走過 2010-04-03

      6.1 類的定義

      考點1 類的定義

        C++語言的類是一種用戶自己定義的數(shù)據(jù)類型,和其他的數(shù)據(jù)類型不同的地方是組成這種類型的不僅可以有數(shù)據(jù)還可以有對數(shù)據(jù)進行操作的函數(shù),它們分別叫做類的數(shù)據(jù)成員和類的函數(shù)成員。類是面向對象程序設計的核心,數(shù)據(jù)封裝就是通過類來實現(xiàn)的。
        類是對一組性質相同對象的描述。類的定義形式一般分為說明部分和實現(xiàn)部分。說明部分是用來說明該類中的成員,實現(xiàn)部分是用來對成員函數(shù)的定義。類的一般定義形式為:
        class<類名>
        {
           private:
           <私有的數(shù)據(jù)和函數(shù)>
           public:
           <公有的數(shù)據(jù)和函數(shù)>
           protected:
           <保護的數(shù)據(jù)和函數(shù)>
       };
           <各個成員函數(shù)的實現(xiàn)>
        其中,類定義以關鍵字class開始,其后跟類名,類名必須是一個有效的C++標識符。
        類所說明的內容用花括號括起來,右花括號后的分號的作用是類說明語句的結束標志。“{}”之間的內容稱為類體。關鍵字private,public和protected稱為訪問權限修飾符或訪問控制修飾符,它們用于限制類成員的控制訪問范圍,如果沒有使用多,則所有成員默認定義為private權限。這些關鍵字的聲明順序和次數(shù)都是任意的。<各個成員函數(shù)的實現(xiàn)>是類定義中的實現(xiàn)部分,這部分包含所有在類體內說明的成員函數(shù)的定義。各個成員函數(shù)的實體內類體內定義,又可以在類體外定義。如果一個成員函數(shù)在類體內定義,實現(xiàn)部分將不出現(xiàn);如果所有的成員數(shù)都在類體內定義,則實現(xiàn)部分可以省略在類體內定義的成員函數(shù)都是內聯(lián)函數(shù)。

       小提示:
         C++規(guī)定任何數(shù)據(jù)類型都必須先定義后使用,類也不例外。

      考點2 類成員的訪問控制

        類成員均具有一個屬性,叫做訪問控制權限。所以從訪問權限上來講,類的成員又分為私有的(private),公有的(public)和保護的( protected) 3類。公有成員定義了類的外部接口,只有公有成員才能被用戶程序直接訪問;私有成員定義了類的內部使用的數(shù)據(jù)和函數(shù),私有成員只能被自己所屬類的成員函數(shù)及友元函數(shù)訪問;保護成員存取權限介于公有成員和私有成員之間,它在類的繼承和派生中使用。

      小提示:
        一個類可以沒有私有成員,但是不能沒有公有成員。

      考點3 類的數(shù)據(jù)成員和類的函數(shù)成員

        1.類的數(shù)據(jù)成員
        數(shù)據(jù)成員是類的一個重要組成部分,它描述了對象的內部數(shù)據(jù)結構。類的數(shù)據(jù)成員是類的基礎,應該正確、完整地定義類的數(shù)據(jù)成員。定義類的數(shù)據(jù)成員應注意:
        (1)在類體中不允許對所定義的數(shù)據(jù)成員進行初始化。
        (2)類中的數(shù)據(jù)成員的類型可以是任意的,包含整型、浮點型、字符型、數(shù)組、  指針和引用等,也可以是對象。另一個類的對象可以作為該類的成員,但是自身類的對象是不可以的,而自身類的指針或引用則是可以的。當一個類的對象作為這個類的成員時,如果另一個類的定義在后,則需要提前說明。
        2.類的函數(shù)成員
        函數(shù)成員實現(xiàn)對類中數(shù)據(jù)成員的操作,它描述了類的行為。由于對象的封裝性,類的函數(shù)成員是對類的私有數(shù)據(jù)成員進行操作的惟一途徑。類中所有的函數(shù)成員都必須在類體中說明,但函數(shù)成員的定義既可在類體內,也可在類體外。
        (1)在類體內直接給出函數(shù)的定義。例如,下面是在類體內給出類成員函數(shù)實現(xiàn)的例子:
             class Shijian{
                private:
                   int Shi,F(xiàn)en,Miao;
                public:
                   void Set(int S, int F, int M)//可省略此成員函數(shù)的變量標識符
              {Shi=S;
                   Fen=F;
                   Miao=M;}
              void Display(){
                   cout<<"現(xiàn)在時間是:";
                   cout<<Shi<<":"<<Fen":"<<Miao;
                  }
              };
        (2)在類體外給出函數(shù)的定義。定義形式如下:
           <返回類型><類名>::<成員函數(shù)名>(<參數(shù)表>)
           {<成員函數(shù)體>}
        成員函數(shù)定義的結構與普通函數(shù)不同之處是在返回類型和函數(shù)名之間加了一個類名和雙冒號“::”。::是作用域運算符,用來標識成員函數(shù)或數(shù)據(jù)成員是屬于哪個類的實理成員函數(shù)時參數(shù)表中的形參變量標識符可以省略。例如,實現(xiàn)上例中的成員函數(shù)Diaplay():
        void Shijian::Disptay()
        {cout<<"現(xiàn)在時間是:";
           cout<<Shi<<":"<<Fen":"<<Miao;}
        另外,類成員函數(shù)同普通函數(shù)一樣,也可以進行重載及其默認參數(shù)。

      小提示:
        類的每個成員函數(shù)在說明中最后的分號不可省略,但在類體內實現(xiàn)時省略分號。

      6.2 對象的定義

      考點4 對象的定義

        類名僅提供該類的類型定義,只有在定義屬于類的變量后,系統(tǒng)才會在內存預留空間。
        對象是類的實例,是由類作為類型定義的變量。定義對象之前一定要先說明該對象的類。定義一個對象同定義一個變量類似,其語法形式為:
              <類名><對象名表>(<參數(shù)表>);
        其中,<對象名表>中可以有一個或多個對象名,有多個對象名時用逗號分隔。<對象名表>中還可以是指向對象的指針名或引用名,也可以是對象數(shù)組名。<參數(shù)表>是進行初始化對象時需要的。

      考點5 對象的成員
        用類定義了對象以后,對象就具有了類的所有性質。也就是說一個對象成員包含了該對象的類所定義的所有數(shù)據(jù)成員和函數(shù)成員。訪問一般對象和引用對象可以用"."運算符;訪問指針對象可以用->。一般對象的數(shù)據(jù)成員表示形式為:
              <對象名>.<成員名>
        一般對象的函數(shù)成員表示形式為:
              <對象名><成員名>(<參數(shù)表>)
        指向對象的指針的成員表示形式為:
              <對象指針名>一><成員名>(表示數(shù)據(jù)成員)
        上述形式也可寫成:(*<對象指針名>).<成員名>
           <對象指針名>一><成員名>(<參數(shù)表>)(表示函數(shù)成員)

      6.3 構造函數(shù)與析構函數(shù)

      考點6 構造函數(shù)和析構函數(shù)的定義

        構造函數(shù)和析構函數(shù)是在類體中說明的兩種特殊的成員函數(shù)。構造函數(shù)的功能是在創(chuàng)建對象時利用特定的值構造對象,將對象初始化為一個特定的狀態(tài),使此對象具有區(qū)別于其他對象的特征。析構函數(shù)的功能是用來釋放一個對象,在對象刪除前,用它來做一些清理工作,與構造函數(shù)的功能正好相反。構造函數(shù)和析構函數(shù)都沒有返回值,并且定義它們時不需要顯式地寫出沒有返回值。構造函數(shù)可以帶參數(shù),也可以重載;而析構函數(shù)不能有參數(shù),也不能重載。
        構造函數(shù)的特點:
        (1)構造函數(shù)是特殊的成員函數(shù),函數(shù)體可以寫在類體內,也可以寫在類體外。該函數(shù)的名字與類名相同,該函數(shù)不能指定返回類型。
        (2)構造函數(shù)一般都被聲明為公有函數(shù)。構造函數(shù)可以重載,即可以定義多個參數(shù)個數(shù)不同或參數(shù)類型不同的構造函數(shù)。
        (3)構造函數(shù)在定義對象時被系統(tǒng)直接調用,程序中不能直接調用構造函數(shù)。
        (4)應用構造函數(shù)定義對象的語法形式為:
            <類名><對象名>(<構造函數(shù)的參數(shù)表>);
        (5)運算符new和構造函數(shù)一起使用。
        析構函數(shù)的特點:
        (1) 析構函數(shù)是特殊的成員函數(shù),函數(shù)體可以寫在類體內,也可寫在類體外。該函數(shù)的名字為求反符號“~”后面跟著類名,該函數(shù)不能指定返回類型,不能有參數(shù),也不能重載。
        (2)一個類只能定義一個析構函數(shù)。
        (3)析構函數(shù)在對象生命周期結束時被系統(tǒng)直接調用,程序中一般不調用析構函數(shù)。
        (4)運算符delete與析構函數(shù)一起使用。

      考點7 默認構造函數(shù)和默認析構函數(shù)

        1.默認構造函數(shù)
        不帶參數(shù)的構造函數(shù)又稱為默認構造函數(shù),當沒有為一個類定義任何構造函數(shù)的情況下,C++編譯器總要自動建立一個不帶參數(shù)的構造函數(shù)。它的定義形式為:
                <類名>::<類名>()
              {
        }
        即它的函數(shù)體是空的。默認構造函數(shù)的函數(shù)名與類名相同,它的參數(shù)表或為空或所有的參數(shù)都有默認值。
        2默認析構函數(shù)
        每個對象都有一個析構函數(shù),如果在定義一個類時沒有定義一個析構函數(shù),C++編譯器要為這個類產(chǎn)生一個默認的析構函數(shù)。它的定義形式為:
              <類名>::<類名>()
              {
        }
          函數(shù)體也是空的。

      考點8 拷貝(復制)構造函數(shù)

        拷貝構造函數(shù)是一個特殊的構造函數(shù),具有一般構造函數(shù)的所有特性,它只有一個參數(shù),參數(shù)類型是本類對象的引用。它的功能是用一個已知的對象來初始化一個被創(chuàng)建的同類的對象??截悩嬙旌瘮?shù)的一般形式為:
          <類名>::<拷貝構造函數(shù)名>(const<類名>&<引用對象名>)
          {//拷貝構造函數(shù)體}
        其中,<拷貝構造函數(shù)名>與類名相同,因為拷貝構造函數(shù)也是一種構造函數(shù)???br>貝構造函數(shù)也不被指定返回類型。每一個類都必須有一個拷貝構造函數(shù)。如果類中沒有聲明拷貝構造函數(shù),則編譯系統(tǒng)自動生成一個具有上述形式的公有的拷貝構造函數(shù),作為該類的公有成員。
        普通構造函數(shù)只在對象創(chuàng)建時被自動調用,而拷貝構造函數(shù)可以在下面3種情況下被自動調用。
         (l)用類的已知對象定義該類的一個正在被創(chuàng)建的對象。
         (2)對象作為函數(shù)的實參傳遞給函數(shù)形參
         (3)對象作為函數(shù)返回值。

      6.4 對象的生存周期

      考點9 全局對象、靜態(tài)對象與局部對象

        對象從被創(chuàng)建開始到被釋放為止的這段時間稱為對象的生存周期。根據(jù)對象的生存周期可將對象分為3類。
        (1)全局對象。全局對象的作用域最大,生存周期最長。調用構造函數(shù)創(chuàng)建該對象的時間是當程序開始執(zhí)行時;調用析構函數(shù)釋放該對象的時間是當程序結束時。
        (2) 靜態(tài)對象。靜態(tài)對象的作用域和生存周期處在全局對象和局部對象之間。調用構造函數(shù)創(chuàng)建該對象時間是當程序第一次執(zhí)行到該對象的定義之處時;調用析構函數(shù)釋放該對象的時間是當程序結束時。
        (3)局部對象。局部對象的作用域最小,生存周期最短。調用構造函數(shù)創(chuàng)建該對象的時間是當程序執(zhí)行到該對象的定義之處時;調用析構函數(shù)釋放該對象的時間是當程序退出定義該對象聽在的函數(shù)體或程序塊時。

      考點10 自由存儲對象
        所謂自由存儲對象是指在程序運行過程中根據(jù)需要可以隨時建立或刪除的對象由堆運算符new和delete 來完成建立和刪除的工作。自由存儲對象在調用構造函數(shù)和析構函數(shù)時需要注意的是:此時的調用是顯示地進行,調用順序取決于new和delete運算符的順序。
       
      6.5  this指針

      考點11 this指針的使用

        C++規(guī)定,this指針是隱含在對象成員函數(shù)內的一種指針。當一個對象被創(chuàng)建后,它的每一個成員函數(shù)都含有一個系統(tǒng)自動生成的隱含指針――this,用以保存這個對象的地址。因此this也稱為“指向本對象的指針”,它存取類成員變量的格式為:
              this-><成員變量>
         this指針是C++實現(xiàn)封裝的一種機制,它將對象和該對象調用的成員函數(shù)連接在一起,在外部看來,每一個對象都擁有自己的函數(shù)成員。一般情況下,并不寫this,而是讓系統(tǒng)進行默認設置。

      小提示:
        this指針永遠指向當前對象。

      6. 6 靜態(tài)成員和常成員

      考點12 靜態(tài)數(shù)據(jù)成員

        如果類的數(shù)據(jù)成員或成員函數(shù)使用關鍵字static進行修飾,這樣的成員稱為靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù)。靜態(tài)數(shù)據(jù)成員是類的所有對象的共享成員,而不是某個對象的成員。靜態(tài)數(shù)據(jù)成員的值對每個對象都是一樣的,但它的值是可以更新的。靜態(tài)數(shù)據(jù)成員的使用方法和注意事項如下:
        (l)靜態(tài)數(shù)據(jù)成員在定義或說明時前面加關鍵字static o
        (2)靜態(tài)數(shù)據(jù)成員必須進行初始化,而且它的初始化與一般的數(shù)據(jù)成員初始化不同。它的初始化格式為:
                  <數(shù)據(jù)類型><類名>::<靜態(tài)數(shù)據(jù)成員名>=<值>;
        從而可知:初始化在類體外進行,而前面不加static,以免與一般靜態(tài)變量或對象相混淆;初始化時不加該成員的訪問權限控制符;初始化時使用作用域運算符來標明它所屬的類,所以,靜態(tài)數(shù)據(jù)成員是類的成員,而不是對象的成員。
        (3)如果靜態(tài)數(shù)據(jù)成員的訪問權限允許的話(即為public成員),可在程序中按下面形式來引用靜態(tài)數(shù)據(jù)成員。形式為:
                  <類名>::<靜態(tài)數(shù)據(jù)成員>

      考點13 靜態(tài)成員函數(shù)

        靜態(tài)成員函數(shù)與靜態(tài)數(shù)據(jù)成員一樣,都屬于類的靜態(tài)成員,它們都不是對象的成員。所以,對靜態(tài)成員的引用不需要用對象名。在靜態(tài)成員函數(shù)的實現(xiàn)中不能直接引用類中說明的非靜態(tài)成員,但可以引用類中說明的靜態(tài)成員。若靜態(tài)成員函數(shù)中要引用非靜態(tài)成員時,則可通過對象來引用。在類體外定義靜態(tài)成員函數(shù)時,不使用static。在main()函數(shù)中,調用靜態(tài)成員函數(shù)的形式為:
                  <類名>::<靜態(tài)成員函數(shù)名>(<參數(shù)表>)

      考點14 常對象

        所謂常對象就是指使用關鍵字const修飾的對象。也可以叫做const對象。一般,能作用于const對象的函數(shù)只有構造函數(shù)與析構函數(shù),因為const對象被看做只能生成與撤銷、而不能被訪問的對象。常對象在定義時必須進行初始化,并且不能被更新。常對象的定義形式為:
                <類名>const<對象名>
                或const<類名><對象名>

      考點15 常成員函數(shù)和常數(shù)據(jù)成員

        1.常成員函數(shù)
        所謂常成員函數(shù)就是指使用關鍵字const聲明的成員函數(shù)。常成員函數(shù)的聲明形式為:
                <返回類型><成員函數(shù)名>(<參數(shù)表>)const;
        const也是類型的一部分,在const成員函數(shù)的定義與聲明時都要寫上。常對象和一般對象都可以調用常成員函數(shù),而一般成員函數(shù)只能由一般對象調用。
        2.常數(shù)據(jù)成員
        所謂常數(shù)據(jù)成員就是指使用關鍵字const聲明的數(shù)據(jù)成員。常數(shù)據(jù)成員的定義形式與一般常量的定義形式相同,只不過常數(shù)據(jù)成員的定義必須出現(xiàn)在類體中。常數(shù)據(jù)成員必須進行初始化,并且不能被更新。常數(shù)據(jù)成員只能通過構造函數(shù)的成員初始化列表進行初始化。

      6.7 友元

      考點16 友元函數(shù)和友元類

        1.友元函數(shù)
        友元可以是一個函數(shù),也可以是一個類,前者稱為友元函數(shù),后者稱為友元類。友元函數(shù)是一種定義在類外部的普通函數(shù),但它需要在類體內進行說明,為了與該類的成員函數(shù)加以區(qū)別,在說明時前面要加關鍵friend。友元函數(shù)不是成員函數(shù),但是它可以訪問類中的聽有成員友兀函數(shù)提高了程序的運行效率,但也破壞了類的封裝性和隱藏性,使得非成員函數(shù)可以訪問類的私有成員友元函數(shù)常常是另一個類的一個成員函數(shù),這樣通過友元函數(shù)可以使一個類對象直接訪問另一個類對象的私有成員。友元函數(shù)作為一個類成員函數(shù)時,除了應在它所在的類定義中聲明之外,還應在另一個類中聲明它的友元關系,聲明格式為:
        friend<函數(shù)返回類型><函數(shù)所在類名>::<函數(shù)名>(<參數(shù)表>
        2.友元類
        友元類是指將一個類聲明為另一個類的友元也就是當一個類作為另一個類的友元時,這個類的所有成員函數(shù)都是另一個類的友元函數(shù)。

      小提示:
        友元關系聲明可以出現(xiàn)在類的私有部分,也可以出現(xiàn)在公有部分;友元關系是單句的,并且只在兩個類之間有效。

      6.8 對象數(shù)組與對象成員

      考點17 對象數(shù)組

        所謂對象數(shù)組是指數(shù)組元素為對象的數(shù)組,對象數(shù)組中的每個元素都是同一類的對象。
        對象數(shù)組的定義為:
              <類名><數(shù)組名>[<大小>]…
        訪問對象數(shù)組成員的一般形式為:
              <數(shù)組名>[<下標>].<成員名>

      小提示:
        當對象數(shù)組生命周期結束之后,C++系統(tǒng)為對象數(shù)組的每個元素調用一次析構函數(shù)。

      考點18 對象成員

        可以在一個類中說明具有類的類型的數(shù)據(jù)成員,這些成員稱為對象成員。說明對象成員的一般形式為:
              class<類名>{
                  <類名1>  <對象成員名1>
                  <類名2>  <對象成員名2>
              …
                  <類名n>  <對象成員名n>
             };
        當類中有對象成員時,該類的構造函數(shù)要調用這些對象成員所在類的構造函數(shù),并采用成員初始化列表的方法為對象成員進行初始化。該類的構造函數(shù)的定義形式為:
      <類名>::<類名>(<總形參表>):<對象成員名1>(<形參表1>),<對象成員名2>(<形參表2>),…<對象成員名n>(<形參表n>)
          {
            //類成員的初始化
      }
        對對象成員的構造函數(shù)的調用順序取決于這些對象成員在類中說明的順序,與它們在成員初始化列表中給出的順序無關。析構函數(shù)的調用順序與構造函數(shù)正好相反。

      6.9 類模板

      考點19 類模板的定義和使用方式

        函數(shù)模板和類模板統(tǒng)稱為模板。對象是類的特例,類也可以看做類模板的特例。與函數(shù)模板一樣,使用類模板可以為類定義一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員函數(shù)的返回值能取任意類型(包括系統(tǒng)定義的和用戶定義的)但函數(shù)模板與類模板也有許多不同,主要是對由函數(shù)模板生成的模板函數(shù)的調用是由編譯器自動決定的,而對類模板的解釋由程序設計者自行指明。類模板使用時需要注意的幾點:
        (1)定義一個類模板時,必須以關鍵字template開始,后面是尖括號括起來的類型形參列表,然后是類聲明:
                template<class Type>
                    class類名{…};
        (2)每一個類模板的成員函數(shù)的外部定義必須以類型形參開始,此外還應加上函數(shù)類型返回值、類范圍、函數(shù)名和形參列表:
                template<class Type>
                <函數(shù)返回類型><類名><Type>::<函數(shù)名>(<Type temp>)
                {
         //函數(shù)體
           };
        (3)類模板是類的抽象類型,它的實例化是生成一個具體的類,形式如下:
        <類名><模板實參表><對象名>;
        或<類名><模板實參表><對象名>(<構造函數(shù)實參表>);

      小提示:
        模板一經(jīng)實例化,便可以且其創(chuàng)建對象。

      (編輯:)

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多