• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Primer 學習筆記二

            A        .函數探幽:

            1.  要使用內聯函數需要做:a. 在函數聲明之前加上關鍵字inline;  b.在函數定義前面加上關鍵字inline; 內聯函數的原始實現是宏!

            2.  聲明引用時必須進行初始化! (const指針也是在創建時進行初始化)

            3.  如何給參數設置默認值?必須通過函數原型。因為編譯器是通過查看原型來了解函數所使用的參數數目,因此函數原型也必須將可能的默認參數告知程序。必須從右向左添加默認值。

            4.  函數在重載時,編譯器在檢查函數特征標(參數類型)時,將把類型引用和類型本身視為同一個特征標。匹配函數時,不區分const和非const變量。

            B .    內存模型和名稱空間:

            1.  不要將函數定義或變量聲明放到頭文件中。為了避免在不知情的情況下將同一頭文件包含多次,可以使用預處理器編譯指令#ifndef,代碼為:#ifndef COORDIN_H_       #define COORDIN_H_   ... #endif

            2.  在c++中,可以使用register來聲明局部變量,作用域為局部,沒有鏈接性。因為存儲在寄存器中,沒有內存地址,因此不能使用地址操作符。register int x;

            3.  靜態存儲持續性變量(在整個程序執行期間存在)有3種鏈接性:外部鏈接性、內部鏈接性和無鏈接性。下面給出代碼:

                      int global=1000;  //靜態持續變量,外鏈接,在代碼塊的外面聲明
                      static int one_file=50;   //靜態持續變量,內聯接,代碼快外面聲明,并使用static限定符
                      int main()
                      {...}

                      void func1(int n)
                      {
                            static int count=0;   //靜態持續變量,沒有鏈接性,只能在func1種使用。在代碼塊內聲明,使用static限定符
                       }

                      所有的靜態持續變量都有兩個初始化特征:a.未被初始化的靜態變量的所有位都被設為0;b.只能用常量表達式來初始化靜態變量。

                      對于外部鏈接性變量,有且僅有一個文件中包含了該變量的外部定義,其他文件要使用該變量,必須在引用聲明中使用extern.

            4.  c++不允許在一個函數中定義另外一個函數,因此所有函數的存儲持續性都自動為靜態的,即在整個程序執行期間都一致存在。默認情況下,函數的鏈接性為外部的。可以用static將函數的鏈接性設置為內部的。

            5.   在c++中,同一個名稱可能對應多個函數,在編譯期間,必須為這些函數提供不同的符號名稱。例如可以將spiff(int)轉換為_spiff_i,而將spiff(double,double);轉換為_spiff_d_d,這稱為c++語言鏈接。而extern "c" void spiff(int); 表示以c的語言鏈接性來查找函數。

            6.  using聲明:假如存在一個名稱空間 namespace Jill{double bucket(double n){...}   double fetch;} 則using Jill::fetch;就是一個using聲明。using聲明在函數內時,則聲明的變量是局部的,如果聲明在函數外,則聲明的變量是全局的。

            7.  using聲明使得一個名稱可用,而using編譯指令使得所有的名稱都可用。 using namespace Jill; 不要在頭文件中使用using編譯指令

            C       .對象和類:

            1.  不用在類中使用private,這是類對象的默認訪問控制。類和結構的唯一區別在于,結構的默認訪問類型是public的。

            2.  cout和cerr的區別:cout對應于標準輸出流,cerr對應于標準錯誤流; cout可以重定向,cerr不可以;cout要分配緩沖,因此cerr比cout快;它們的 標準默認輸出設備都是屏幕。

            3.  類的每個對象都有自己的存儲空間,用于存儲其內部變量;但同一個類的所有對象共享同一組類方法,即每種方法只有一個副本。

            4.  默認構造函數是在未提供顯式的初始化值時,被用來創建對象的構造函數。例如:Stock stock1; 當且僅當沒有定義任何構造函數時,編譯器才會提供默認構造函數。為雷定義了構造函數后,程序員就必須為它提供默認構造函數。否則Stock stock1;這樣的聲明將出錯。

            5.  const成員函數:void show()const; 其對應的定義為void Stock::show()const; 表明在這個類方法中不會修改調用對象。

            6.  使類中的某個變量為整個類都可用。a.可以在類中聲明一個枚舉。在類中聲明的枚舉的作用域為整個類,例如: class Stock{ private:    enum{Len=30};};   所有的對象都不包含枚舉!!!           b.使用static: class Stack{ private:  static const int Len=30;}; 這將創建一個Len常量,該常量不存儲在對象中,而與其他的靜態變量存儲在一起!!

            posted on 2008-03-11 13:49 弱水一瓢 閱讀(233) 評論(0)  編輯 收藏 引用 所屬分類: C++ Primer

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            文章分類

            最新評論

            av午夜福利一片免费看久久| 久久久久99这里有精品10| 久久精品亚洲一区二区三区浴池 | 久久精品中文字幕有码| 国产L精品国产亚洲区久久| 久久精品免费大片国产大片| 久久久久av无码免费网| av无码久久久久不卡免费网站 | 国产精品久久久久久久午夜片 | 97精品国产97久久久久久免费| 久久久精品人妻一区二区三区蜜桃| 久久久91精品国产一区二区三区 | www.久久热.com| 亚洲精品成人久久久| 久久精品国产亚洲欧美| 亚洲国产高清精品线久久 | 久久亚洲春色中文字幕久久久| 一本大道久久a久久精品综合| 国产精品久久久久蜜芽| 久久九九免费高清视频| 久久香综合精品久久伊人| 亚洲精品WWW久久久久久| 国产精品99久久久久久www| 久久久国产乱子伦精品作者| 久久青青色综合| 女同久久| 欧美午夜A∨大片久久 | 久久99热这里只频精品6| 日韩一区二区久久久久久| 精品国产乱码久久久久久1区2区| 一本色综合久久| 久久最新免费视频| 久久久久这里只有精品 | 日本三级久久网| 精品999久久久久久中文字幕| 久久夜色精品国产欧美乱| 久久久久久久波多野结衣高潮 | 国产一区二区三区久久精品| 亚洲AV无码久久精品色欲| 伊人久久综合精品无码AV专区| 亚洲人成无码网站久久99热国产|