C C 錯題集之static相關

2021-08-15 21:09:01 字數 1529 閱讀 6972

靜態資料成員只能在全域性區域進行初始化,而不能在類體中進行(建構函式中初始化也不行),且靜態資料成員不涉及物件,因此不受類訪問限定符的限制。 

類方法是指類中被static修飾的方法,無this指標

類方法是可以呼叫其它類的static方法的

可以在類方法中生成例項物件再呼叫例項方法

成員方法又稱為例項方法

區域性變數說明為static儲存數,其生存期將得到延長,離開區域性時,區域性變數的值會儲存,下次再回到區域性時可以讀取儲存的值;

全域性變數宣告為static後,其作用域非但沒有擴大,反而縮小,只能在所在的檔案內使用;

靜態變數預設初始化為0;

區域性變數可以使用static,形參不能

虛成員函式不可能是static成員函式

外部變數,可供所以原始檔使用

暫存器變數,放在暫存器而非記憶體中,效率更高,一般是臨時變數

自動變數,所有未加 static 關鍵字的都預設是 auto 變數,也就是我們普通的變數

靜態變數,在記憶體中只存在乙個,可供當前原始檔的所有函式使用

靜態儲存變數具有區域性的生存期.說法是否正確?錯誤

在程式執行期間都不釋放  static不在棧區儲存,所以不是區域性生存期。

c++的多型性分為靜態多型和動態多型。 

靜態多型性:編譯期間確定具體執行哪一項操作,主要是通過函式過載和運算子過載來實現的; 

動態多型性:執行時確定具體執行哪一項操作,主要是通過虛函式來實現的。

類中的靜態成員是被類所有例項所共享的,它不計入sizeof計算的空間 

類中的普通函式或靜態普通函式都儲存在棧中,不計入sizeof計算的空間 

靜態多型(早繫結),如函式過載

動態多型(晚繫結),如虛函式,繼承

virtual 不能修飾靜態成員函式、內聯函式和建構函式

類的靜態成員函式可以呼叫靜態資料成員,但是不能呼叫非靜態資料成員和非靜態成員函式

靜態資料成員必須單獨初始化

靜態資料成員只有乙份,且不依賴物件而存在

靜態成員函式不能加const

靜態聯編與動態聯編:如果是通過物件名呼叫虛函式,在編譯期間就能確定呼叫的是哪乙個類的虛函式,所以屬於靜態關聯;如果是通過基類指標呼叫虛函式,在編譯階段無法從語句本身確定呼叫哪乙個類的虛函式,只有在執行時,pt指向某乙個類物件後,才能確定呼叫的是哪乙個類的虛函式,故為動態關聯

靜態儲存變數具有區域性的生存期:false

靜態鍊錶中指標表示的是下乙個元素在陣列中的位置

通過乙個物件呼叫虛函式時,c++系統對該呼叫採用靜態聯編

靜態函式屬於類本身,不與類繫結,因此不能用this指標。

在類定義時,無法使用建構函式,因而無法完成物件的初始化

一般成員變數需要在類內進行初始化

靜態成員變數必須在類外初始化,靜態成員常量在類中初始化。

靜態分配是指在編譯階段就能確定大小,由編譯器進行分配,堆不可以進行靜態分配,堆的申請都是在執行過程中進行的。堆是使用malloc()、calloc()、realloc()等函式動態分配的,而使用alloca()函式可以動態分配棧的記憶體空間,釋放的時候由編譯器自己釋放。

C C 練習錯題集

單選題 若int 佔 2 個位元組,char 佔 1 個位元組,float 佔4 個位元組,sizeof xc 大小是 struct stu class char xm 8 float cj xc sizeof xc 大小是 20 記憶體對齊規則 結構體的總大小為結構體最寬基本型別的整數倍 聯合體裡...

機器學習錯題集

1.線性分類器有三大類 感知器準則函式 svm fisher準則,而貝葉斯分類器不是線性分類器。感知器準則函式 代價函式j w x w0 分類的準則是最小化代價函式。感知器是神經網路 nn 的基礎,網上有很多介紹。svm 支援向量機也是很經典的演算法,優化目標是最大化間隔 margin 又稱最大間隔...

C語言錯題集

c語言錯題集 1 continue 不是結束本次迴圈,而是終止整個迴圈的執行。錯誤 用continue語句提前結束本次迴圈 2 直接訪問就是直接利用變數的位址進行訪問直接訪問 正確3 共用體變數可以作結構體的成員,結構體變數也可以作共用體的成員。正確4 列舉型別中的元素都具有乙個整型值。正確5 函式...