C 基本知識2

2021-08-21 18:05:15 字數 1565 閱讀 3786

const在c(c++)中的作用:

如果有乙個類成員,它本身是乙個類或者是乙個結構,而且這個成員它只有乙個帶引數的建構函式,沒有預設建構函式。這時要對這個類成員進行初始化,就必須呼叫這個類成員的帶引數的建構函式,

如果沒有初始化列表,那麼他將無法完成第一步,就會報錯。

類成員中若有const修飾,必須在物件初始化的時候,給const int m 賦值

當類成員中含有乙個const物件時,或者是乙個引用時,他們也必須要通過成員初始化列表進行初始化,

因為這兩種物件要在宣告後馬上初始化,而在建構函式中,做的是對他們的賦值,這樣是不被允許的。

1:用於定義常量:const定義的常量編譯器可以對其進行資料靜態型別安全檢查。

2:const修飾函式形式引數,輸入引數為自定義和抽象資料型別時,為」const&傳遞」。

例:void fun(a const &a)

即加入了引用,變為引用傳遞。

3:const修飾函式的返回值:如給」指標傳遞」的函式返回值加const,z則返回值不能被直接修改,且返回值只能被賦值給加const修飾的同型別指標。

例:const char *getchar(void){};

const char *ch = getchar();

4:const修飾類的成員函式(函式定義體):任何不會修改資料成員的函式都應用const修飾,防止修改資料成員或呼叫非const成員函式,該方法實現如下:

例:int getcount(void) const;

static在c(c++)中的作用:

1:在函式體中,乙個被宣告為靜態的變數在這一函式被呼叫的過程中維持其值不變。

2:在模組內,(但在函式外),乙個被宣告為的變數可以被模組內所有函式訪問,但不能被模組外其他函式訪問,他是乙個本地的全域性變數。

3:在模組內好,乙個被宣告為靜態的函式只能被這一模組的其他函式呼叫。那就是限制在宣告它的模組的本底範圍內使用。

全域性變數及區域性變數與靜態變數的區別:

區域性變數變為靜態變數改變了它的儲存方式,即改變了它的生存期;

全域性變數改變為靜態變數後改變了它的作用域,限制了它的適用範圍。

且static變數只初始化一次,static函式在記憶體中僅有乙份,而普通函式在每次呼叫時都複製一次。

sizeof與strlen的區別

1.sizeof是操作符,strlen是函式。

2.sizeof操作符的結果型別是size_t,他在標頭檔案中的typedef為unsignedint型別,該型別保證能容納實現所建立的最大物件的位元組大小。

3.sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以」\0」結尾的。

4.陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了。

5*.sizeof所求的值在編譯時就計算過了,即sizeof(x)可用來定義陣列維數。strlen的結果在執行時才計算。

sizeof常見形式:sizeof(int)或sizeof(x),即因為sizeof為操作符。strlen計算字串陣列長度結果為寫入字串的長度,而sizeof計算的是陣列所佔記憶體空間的大小;strlen計算指標指向的字串的長度,而sizeof計算的時指標占用的記憶體空間大小。  

C 基本知識整理(2)

1 建構函式 c 中定義了一種特殊的初始化函式,稱為建構函式 當物件被呼叫時,建構函式自動呼叫 建構函式名字與類名相同,也沒有返回型別和返回值 物件在生成過程中通常需要初始化變數或分配動態記憶體,用建構函式。程式中可以沒有建構函式,這時會執行乙個空的建構函式。下面來看建構函式例項 include u...

C 基本知識

內聯函式 在c 98的標準下為63個關鍵字 1.普通的命名空間 namespace n1 n1為命名空間的名稱 2.命名空間可以巢狀 namespace n2 namespace n3 3.同乙個工程中允許存在多個相同名稱的命名空間,編譯器最後會合成同乙個命名空間中。1.加命名空間名稱及作用域限定符...

c 基本知識

1.類 包含某一物體的基本屬性的抽象。2.物件 具體指某乙個物體。實實在在存在的東西。3.建構函式 負責類建立物件的函式。如果類沒有宣告建構函式,c 編譯器會提供預設的無參的建構函式。這個函式只負責建立物件,不負責物件初始化工作。4.析構函式 負責釋放物件,記憶體的 5.變數訪問修飾符 public...