1. 程式人生 > >c\c++筆記之二

c\c++筆記之二

part 2 函式中形參是const型別的話,在實參初始化形參的時候會忽略const修飾,換句話說,形參的頂層const被忽略掉;所以 function(const int a)與function(int a)不能認為
是過載函數了。 可以用非常量的變數給頂層const賦值,反之卻不能,給給函式傳值也一樣。 常量引用只能繫結到物件不能繫結到字面值常量;const限定符可以直接繫結到字面值常量:const int &i=11是允許的。常量指標繫結的是物件,const限定符只是限定其繫結的
物件不能發生改變,允許通過改變指標的值來改變物件的值。 陣列的兩個特性:1.不允許拷貝;2.使用陣列時會將其轉換成指標。begin()和end()函式可以查詢陣列首元素和尾元素的地址。
注意:int(*a)[10]為指向10個整數的陣列的指標;int *a[10]為10個指向整數指標組成的陣列;
      int arr[10] //含有10個整數的陣列;
      int *prt[10]//含有10個指向整數指標的陣列;
      int (*prt)[10]=&arr//指向一個10整數陣列的指標。所以要宣告一個返回陣列指標的函式類似,形如:type (function(parameter list)) [dimension];
建構函式沒有返回值,名字與類名字一樣,支援過載;建構函式不能被宣告成為const;另外,就算我們的建立的的是const物件,直到建構函式完成初始化之後,物件才真正取得它
的常量屬性;含有內建型別或者複合型別的成員應該在類的內部初始化,這種情況下,只有內建型別和複合型別成員都賦值才可以順利執行合成預設建構函式。 在c++11中struct和class關鍵字作用是一樣的,不同的是class預設的訪問許可權是private,而struct是public; 非類內函式訪問類的非公有成員,只需要在類內宣告該函式為友元函式,加關鍵字friend; 類內初始值必須使用=的初始化形式或者花括號括起來的直接初始化形式。 對於一個不需要改變變數的操作,我們應該用const來修飾。類中允許通過const來過載函式,並且通過物件時候是const來決定呼叫函式。 note:
一個類的名字就是一個類型別,只有名字相同才是型別相同;不允許不同型別的類型別相互複製; string s;
s=string(10,'c');//表示將10個c賦值給s; 關於static關鍵詞:
static修飾區域性變數時該變數是存放在靜態儲存區,生命週期是整個程式結束。static區域性變數初次定義時就要初始化,且只能初始化一次。如果在定義的時候不初始化,
編譯器就會自動賦值為0;(也就是說如果重複呼叫同一個函式,在第二次呼叫時,就不會再執行static區域性變數初始化那句話 了) 當static修飾全域性變數或者函式時,不是為了限制其儲存方式,而主要是為了限制該全域性變數或者函式的作用域僅限於本檔案,所以又稱為內部函式。此件時, 對於外部
(全域性)變數, 不論是否有static限制, 它的儲存區域都是在靜態儲存區, 生存期都是全域性的. 此時的static只是起作用域限制作用, 限定作用域在本模組(文)內部.
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。