C 面試常見題目2 const 與 static

2021-08-21 09:34:45 字數 1081 閱讀 7996

const的最初動機是取代預處理器#defines來進行值替代,它可以被用於指標,函式變數,返回型別,類物件以及成員函式。

const物件預設為檔案的區域性變數,要使其可以在其他檔案被訪問,需要顯示指定為extern。

對於指標來說,可以指定指標本身為const,也可以指定指標所指向的資料為const,或者二者同時指定為const。

對於非內部資料型別的輸入引數,應該將「值傳遞」的方式改為「const引用傳遞」,目的是提高效率。對於內部資料型別的輸入引數,不要將「值傳遞」的方式改為「const 引用傳遞」。否則既達不到提高效率的目的,又降低了函式的可理解性。

函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此,其值在下次呼叫的時候仍然維持原始值。

在檔案內的static函式只可以被這一檔案內的其他函式呼叫,這個函式的使用範圍被限制在宣告它的檔案內,即具有檔案作用域的特點。

const修飾類的成員常量,不能被修改,同時它只能在初始化列表中賦值初始化。

const類物件/指標/引用,只能呼叫類的const成員函式,因此,const修飾成員函式的最重要作用就是限制對於const物件的使用。

const成員函式可以訪問非const物件的所有資料成員,也可以訪問const物件內的所有資料成員。

非const成員函式可以訪問非const物件的所有資料成員,但不可以訪問const物件的任意資料成員。

所有類物件共享乙個static類成員,static類物件必須要在類外進行初始化。

由於static修飾的類成員屬於類,不屬於物件,因此static類成員函式是沒有this指標的,this指標是指向本物件的指標。正因為沒有this指標,所以static類成員函式不能訪問非static的類成員,只能訪問static修飾的類成員。

靜態成員函式在建立物件前就可以使用了,非靜態方法必須通過物件呼叫。

static成員不是任何物件的組成部分,所以static成員函式不能被宣告為const,畢竟,將成員函式宣告為const就是承諾不會修改該函式所屬的物件。最後,static成員函式也不能被宣告為虛函式。

本系列文章目的為個人準備面試的簡單總結,文中多有不足,敬請批評指正!

C 基礎2 const型別

1.const變數 a.在全域性作用域裡面定義的const變數,被認為說檔案域的區域性變數,其他檔案不能訪問。如果需要訪問,則在定義此const變數時,應定義為extern const int i 5 使用的時候再次在需要使用它的檔案裡面宣告為extern const int i b.const變數...

C 常見演算法題目 面試準備

1.寫出冒泡,選擇,插入排序演算法。氣泡排序 public class bubblesorter 選擇排序 public class selectionsorter int t list min list min list i list i t 插入排序 public class insertion...

C 常見面試題目

const作用 1 可以定義const常量,具有不可變性。2 便於進行型別檢查。而巨集不會進行型別檢查 3 可以保護被修飾的東西,防止意外的修改。4 可以節省空間。static作用 1.隱藏 乙個檔案中的全域性變數在另外乙個檔案中使用extern宣告就能使用,宣告了static就不能了 乙個函式內的...