目前分類:未分類文章 (2)

瀏覽方式: 標題列表 簡短摘要

‧成員函數的定義:
   1. 定義在Class中
   2. 定義在外部,但是函數名稱前要加上"類別名稱::"
   小易說後面的比較好,不然萬一有互相呼叫的就會打架了

‧呼叫同一個物件的成員函數只需要函數名稱
   呼叫不同物件的成員函數則需要"物件名稱."

‧存取標籤(Access Label)
   public(其他物件可以存取) v.s. private(其他物件不得存取)        // 在class中可以寫很多次
   class省略存取標籤時,會自動定義成private,struct省略存取標籤則會定義成public
   private和public弄錯時會Compile Error

‧建構子(constructor)
   產生物件時自動呼叫的特殊成員函數,必須為public,負責成員變數的初始化,宣告時要跟class同名
   class ex
   {
        public:
               ex()
        private:
               int data;
   };
   ex::ex()
   {
        data = 0;
   }

‧解構子(destructor)
   物件結束任務(執行到物件有效範圍結束)時會自動呼叫的特殊成員函數,必須為public,宣告時要跟class同名並在最前面加上"~"

‧C++函數的參數值可以有初始值,但是要從最後一個參數依序開始預設(可以只有後半段有預設值)

‧多載(overload)就是不同的傳入參數型態可以有同樣名字的函數,編譯器會依照傳入值型態對應到對應的函數
   只有回傳值型態不同則無法多載
‧若是全域變數、成員變數、成員函數裡的local變數有相同名稱,則函數內函數的local變數有最優先權
   Class名稱::變數名稱 則可以對成員變數進行操控
   ::變數名稱 可以對全域變數進行操控

cout.width(4);
   cout<<25;

   = printf("%4d", 25);
cout.fill('0');
   cout.width(4);
   cout<<25;
   = printf("%0d", 25);
‧cin.getline(char[]名稱, size); = gets(char[]); + 長度限制

‧命名空間(namespace)的寫法是在外面加上
   namespace 命名空間名稱
   {
        (...)
   }
    存取時加上"命名空間名稱::"
    在開頭加上using namespace 命名空間名稱則可以直接存取該命名空間裡的函數&變數

‧函數加上inline,會展開到呼叫函數的部份  (其實和C的Macro很像)
   例如:
   inline int sum(int a, int b)
   {
       return a + b;
   }

   int main()
   {
         sum(10, 20);
         return 0;
   }
   在編譯後會變成
  int main()
   {
         10+20;
         return 0;
   }
   這樣可以減少呼叫函數的時間,但是程式本身大小會變大

‧在成員函數名稱後、大括號前加上const,代表此成員函數是const成員函數,不會變更Class裡成員函數的值

‧指標 = new 資料型態
   delete 指標名稱
‧指標名稱 = new 陣列型態[個數]
   delete [] 指標名稱

‧建構子也可以多載(可以傳入初始化參數)(使用直接初始化)
   複製建構子:用既有物件初始化,可以自己定義(有指標成員的話則定義比較好)

‧在一個class裡用friend class 類別名稱,就可以讓該類別的成員函數存取這個class裡的變數
   (但是是單向的,也就是這個class不可以存取他定義成friend類別裡的變數
   也可以只針對其他類別的成員函數加上friend宣告,此時那個類別裡就只有該成員函數可以存取它

aikosenoo 發表在 痞客邦 留言(0) 人氣()

轉自  http://www.wretch.cc/blog/Geniusking/7263728

※ 使用方式

gcc [option] filename

※ 選項

-c : 只做編譯(不做連結)
-S : 輸出組譯碼
-E : 將預處理結果顯示
-o filename : 指定輸出檔名
-ansi : 程式要求依據ansi c標準
-Dmacro : 使定義巨集(marco)為有效
-Dmarco=defn : 使定義巨集(marco)為defn
-Wa,option : 將選項(option)傳給組譯器
-wl,option : 將選項(option)傳給連結器
-I : 追加include檔案的搜尋路徑
-L : 追加library檔案的搜尋路徑
-l : 指定連結的函式庫
-Wall : 顯示所有的警告訊息
-g : 編入除錯資訊(要使用GDB除錯一定要加)
-O2 : 做最佳化
※ 使用範例

Example:

gcc -o file a.c b.c c.c
gcc -Wall -g -o test test.c
gcc -Iinclude -Llibrary -lmy_lib -o test1 test1.c
gcc -DDEBUG_ON -o test2 test2.c
gcc -c -o test3 test.c

aikosenoo 發表在 痞客邦 留言(2) 人氣()