努力學習c 的一天(十二)

2021-10-19 23:37:42 字數 1312 閱讀 6525

1. 聯合體union

乙個 union 可以有多個資料成員,但是在任意時刻只有乙個資料成員可以有值。當某個成員被賦值後其他成員變為未定義狀態。

2. 全域性變數global和靜態變數static區別

全域性變數和靜態變數在記憶體中存放在同一位置,即靜態區/全域性區。

從作用域來看:

靜態變數的生命週期為整個源程式,其作用域仍與普通變數相同

靜態全域性變數也具有全域性作用域,他與全域性變數的區別在於如果程式包含多個檔案的話,他作用於定義它的檔案裡,不能作用到其他檔案裡,即被static關鍵字修飾過的變數具有檔案作用域。這樣即使兩個不同的原始檔都定義了相同的靜態全域性變數,他們也是不同的變數

從生命週期看:

都在程式執行時期全程有效

全域性變數:用extern宣告,也稱之為外部變數,是在方法外部定義的變數。它不屬於哪個方法,而是屬於整個源程式。作用域是整個源程式。如果全域性變數和區域性變數重名,則在區域性變數作用域內,全域性變數被遮蔽,不起作用。程式設計時候盡量不使用全域性變數。 

靜態變數:用static宣告,從物件導向的角度觸發,當需要乙個資料物件為整類而非某個物件服務,同時有力求不破壞類的封裝性,既要求此成員隱藏在類的內部,有要求對外不可見的時候,就可以使用static。

3. main函式的引數argc,ar**是什麼意思

argc 是 argument count的縮寫,表示傳入main函式的引數個數;

ar** 是 argument vector的縮寫,表示傳入main函式的引數序列或指標,並且第乙個引數ar**[0]一定是程式的名稱,並且包含了程式所在的完整路徑;

4. 類的靜態成員函式訪問非靜態成員變數的方法:

#includeusing namespace std;

class a

; static void f(a a);

private:

int m_x;

};void a::f(a a)

{

//靜態成員函式只能引用屬於該類的靜態資料成員或靜態成員函式。

// cout<5. 類前向宣告的意義:解決類間相互包含的問題

6. const

7. 基類和派生類

把派生類物件賦值給基類物件。 把派生類物件的位址賦值給基類指標。 用派生類物件初始化基類物件的引用。 反之則不行,即不能把基類物件賦值給派生類物件;不能把基類物件的位址賦值給派生類物件的指標;也不能把基類物件作為派生物件的引用。

派生類只能採用建構函式初始化列表的方式向基類或成員物件的建構函式傳遞引數

派生類物件的構造

努力學習c 的一天(三)

盡力尊重原創 1.封裝成dll和lib的區別是什麼?首先,dll和lib都是鏈結庫,dll是動態鏈結庫,lib是靜態鏈結庫。靜態庫是指在鏈結的過程中,將該庫中的 完全複製到可執行檔案中 動態庫是指可以被不同程序呼叫但不屬於可執行檔案的函式,可由多個程式同時使用。總之,lib是編譯時用到的,dll是執...

努力學習C 的一天(五)

1.stdafx.h和stdafx.cpp是用來幹嘛的?stdafx.h,stdafx.cpp這些檔案用於生成名為.pch 的預編譯頭 pch 檔案和名為 stdafx.obj 的預編譯型別檔案。結構體定義 struct calib para 函式宣告 float compute angle cal...

努力學習c 的一天(九)

參考 參考 1.建構函式怎麼寫 首先,當類被例項化後,會自動呼叫建構函式,由建構函式完成物件的初始化工作,建構函式的作用 初始化物件的資料成員 因此,建構函式中的內容 初始化物件成員 包括public private class student 使用變數 函式時要指明它們所在的命名空間。li fp ...