C 需要注意點

2021-06-29 02:27:06 字數 3270 閱讀 9966

11、設定static成員變數初值時,不受任何訪問許可權的束縛。可以再還沒有誕生任何物件的時候就處理static型別成員變數,但首先必須初始化它。

2、只要access level允許,任何函式都可以訪問static成員變數。但如果你希望在產生任何object之前就訪問其class的private static成員變數,則必須設計乙個static成員函式。

3、四種不同的物件生存方式(in stack,in heap,global,local static)。

4、程式中不能定義void型別的變數,它僅僅是用於說明沒有返回值或者說明指標是無型別的。

5、變數的幾種儲存型別:

在c++中,變數的儲存型別有自動型別、暫存器型別、靜態型別、外部型別等四種型別。

(1)、自動型別變數auto:自動型別只能是區域性型別變數,屬於動態儲存型別。

(2)、靜態型別變數static:即在程式執行的過程中靜態變數始終是占用乙個儲存空間,靜態變數只能再他的作用範圍內使用,使用區域性靜態變數始終是占用乙個儲存空間。靜態變數只能在他的作用範圍內使用,使用區域性靜態變數是為了在下次呼叫該函式時,能使用上次呼叫後得到的該變數的值。

(3)、暫存器變數register:屬於動態儲存型別,編譯器不為暫存器型別的變數分配記憶體空間,而是直接使用cpu的暫存器。以便提高對這類變數的訪問速度。主要用於控制迴圈次數等不需要長期儲存值得變數。

(4)、外部型別變數extern:外部型別變數必須是全域性變數,在c++中,有兩種情況需要使用外部型別變數。一種是在同一源程式中,當在全域性的定義前使用該變數時,在使用前要對該變數進行外部型別變數宣告。另一種是當程式有多個檔案組成時,若乙個原始檔中要引用在另乙個原始檔中定義的全域性變數,則在引用前必須對所引用的變數進行外部宣告。如果在某檔案中定義的全域性變數不想被其他檔案使用,則必須將該變數宣告為靜態全域性變數,也就是說,靜態全域性變數只能供所在的檔案中使用。

6、如何在switch語句內部定義變數:在switch結構中可以再最後乙個case標號或default標號後面定義變數,或者引入塊語句來定義變數。

7、純虛函式用來定義沒有意義的實現,用於抽象類中西藥交給派生類具體實現的方法。

8、何時使用this指標:當對乙個物件呼叫成員函式時,編譯器程式先將物件的低著賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含作用this指標。而通常不去顯示地使用this指標類引用資料成員。同樣也可以使用*this來標識該成員函式的物件。

9、可以使用派生類的引用或物件初始化基類的引用。嚴格說來,對物件沒有類似轉換。編譯器在執行時不會自動將派生型別物件轉換為基類。

10、c++支援引數個數不確定的,當不知道有多少個引數或型別,只知道其中乙個或幾個,那麼可以用隱藏引數...代替,不知道的就用...代替,呼叫時只需要處理所知道的引數,c++是通過隱藏引數機制來支援引數個數不確定的函式。

11、類的靜態成員函式可以訪問類的私有成員,但是靜態成員函式不能直接訪問類的靜態私有成員,因為靜態成員函式是不可以直接訪問類的非靜態成員的,但是靜態成員函式可以借助物件名和指標來訪問類的非靜態私有成員。靜態函式是不可以直接訪問類的私有成員變數的,但是可以通過巨集定義private和public等方法來實現對類的私有成員的訪問。 

12、任何乙個邏輯運算子的優先順序低於乙個關係運算子。移位運算子的優先順序比算術運算子要低,但是比關係運算子要高。

13、用雙引號引起的字串,代表的是乙個紙箱無名陣列起始字串的指標。

14、在函式宣告時省略了返回值型別,而且陣列的大小必須在編譯期就作為乙個常數確定下來。而c語言中陣列的元素可以是任何型別的物件,當然也可以是另外乙個陣列。這樣,要**出乙個多維陣列就不是一件難事。

15、(1)int a[3],*p;    p = a;

(2)int a[3],*p;p = &a;

其中(1)是將a中下標為a的元素的位址賦值給p;(2)中&a是乙個紙箱陣列的指標,而p是乙個指向整數的指標,他們型別不匹配,故p = &a為非法的。

16、字串常量代表了一塊包括字串中所有字元以及乙個空字元的記憶體區域的位址。試圖修改字串常量的行為是未定義的,如指標指向一常量字串,然後試圖通過指標來修改所指向的常量。

17、當常量0倍轉換為指標使用時,這個指標絕對不能被解除引用。合法的寫法(if(p== (char*)0)...)

18、c語言中其他所有運算對其運算元求值得順序是未定義的。特別是複製運算子並不保證任何求值順序。

19、如果乙個函式在被定義之前被呼叫,那麼它的返回型別就預設為整形。

20、巨集定義不是函式,也不是型別定義,對型別的定義最好用typedef。

21、c++語言並沒有定義任何輸入輸出語句。取而代之,包含了乙個全面的標準庫中提供io機制。

22、命令空間可以幫助我們避免不經意的名詞衝突,以及使用庫中相同名字導致的衝突。標準庫定義的所有名字都是在命名空間std中。標準標頭檔案通常不帶字尾。

23、當乙個算術表示式中既有無符號數又有int值時,那麼int值就會轉換為無符號數。因此,切勿混用帶符號型和無符號型別的。

24、物件是指一塊能儲存資料並且具有某種型別的記憶體空間。物件是指能夠被程式修改的資料,而值指唯讀的資料。

25、extern變數的定義必須出現在且只能出現在乙個檔案中,而其他用到該變數的檔案必須對其宣告,絕對不能重定義。

26、使用者定義識別符號中不能連續出現兩個下劃線,也不能以下劃線緊跟大寫字母開頭。此外,定義函式體內的識別符號不能以下劃線開頭。

27、引用只能繫結到乙個物件上,而不能與字元值或某個表示式的結果繫結在一起。指標本身就是乙個物件,允許對指標賦值或拷貝。

28、注意指標的使用:int *pi = 0;pi = 0;*pi = 0指標賦值為0是將指標置空,指標解引用賦值是給指標指向的物件賦值,複製永遠改變的是符號左側的物件。

29、不能直接操作void*指標所指向的物件,因為我們並不知道這個物件到底是什麼型別,也就無法確定在這個物件上做哪些操作。以void*的視覺來看,記憶體空間也就僅僅是記憶體空間,沒辦法訪問記憶體空間中所存的物件。

30、指標是乙個物件,所以存在對指標的引用。如:int *&r;r引用乙個int指標。

31、引用型別必須和其所引用的型別保持一致,但是有兩個情況例外。第一種例外情況就是初始化常量引用時允許用任意表示式作為初始值,只要改表示式的結果能夠轉換成引用型別即可。其二,允許乙個常量引用繫結非常量的物件,字元值,甚至是個一般表示式。

32、類內初始值的限制與之前的類似,或者放在活括號裡,或者放在符號右邊,記住不能使用圓括號。

33、decltype((variable))的結果永遠是引用,而decltype(variable)的結果只有當裡面的variable本身是乙個引用時才是引用。

34、類內初始值得限制於之前的類似,或者放在花括號裡,或者放在等號右邊,記住不能使用圓括號。

35、預處理變數無視c++語言中關於作用於的規則。

NGUI 需要注意點

如果滾動檢視中的item數量太少,還不能夠超出滾動檢視,那麼cancel drag if fits最好要勾選,否則檢視會被拖動,那樣使用者體驗會不好 只有當滾動條目的內容長度超出滾動區域後,才能夠拖動 2 例項化預設體 指定父物件 然後再transform.localscale new vecter...

平時開發需要注意的點

一 牢記瀏覽器常見bug的處理方式,在 第一次編寫時就考慮解決相容問題 其實在第一次編寫 時,就已經可以開始考慮元素的樣式是否會引起其他瀏覽器的相容問題,防範於未然。舉個常見的例子 ie中float元素如果同時設定了margin值,此時margin的值會變為雙倍,解決辦法是在該元素中加入displa...

AutoLayout 中需要注意的點

本文用於記錄我在使用 autolayout 過程中遇到的一些需要注意的事情,一種是容易犯的錯誤,一種是我找不到原因的情況。如果預覽的樣式和你預想的不一樣,檢查一下是不是忘記給作為背景的 view 新增約束 上下左右 可能有乙個約束缺失,導致整體樣式出錯。在 scrollview 中通過 autola...