作業系統與網路 2019 2 1

2021-09-11 23:50:48 字數 4160 閱讀 2844

1.作用域是通過 :: 來進行區分的;

2.全域性變數需要使用 :: 來與區域性變數進行區分(同名情況下);

3.命名空間是 ansi c++ 引入的可以由使用者命名的作用域,用來處理程式中常見的同名衝突;

4.當只呼叫標頭檔案而沒有開啟命名空間時,某些函式是無法使用的。

1.函式的預設值從右到左(右邊有,左邊無);

2.函式的預設值不能有間隔,就是乙個有,乙個沒有,下乙個又有;

3.預設值在宣告函式的時候給出;

1.c++允許在同乙個作用域有幾個同名函式,但是這些同名函式的形參必須不同(引數的個數、型別或順序);

2.過載函式常用來實現功能類似而所處理的資料型別不同的問題;

3.不能只有函式返回值型別不同。

1.申請記憶體所在位置不同: new 從自由儲存區為物件動態分配記憶體空間, malloc 從堆上為物件動態分配記憶體空間;

2.返回型別安全性不同:new操作符記憶體分配成功時,返回的是物件型別的指標,型別嚴格與物件匹配,無須進行型別轉換,故new是符合型別安全性的操作符;malloc記憶體分配成功則是返回void *,需要通過強制型別轉換將void *指標轉換成我們需要的型別;

3.記憶體分配失敗時的返回值不同:new記憶體分配失敗時,會丟擲bac_alloc異常,它不會返回null;malloc分配記憶體失敗時返回null;

4.是否需要指定申請記憶體空間的大小:new操作符申請記憶體分配時無須指定記憶體塊的大小,編譯器會根據型別資訊自行計算;malloc則需要顯式地指出所需記憶體的尺寸;

5.是否呼叫建構函式/析構函式:new 和 delete 分別會呼叫構造和析構;而malloc和free則不會呼叫構造和析構;

6.是否能夠被過載:new 和 delete 可以被過載;malloc和free不允許過載;

1.可以用來進行比較字串;

1.引用就是給變數起別名;

2.typedef是給型別起別名;

3.引用的符號:&

4.引用:可以使程式在不同作用域使用同乙個變數;

5.與指標的區別:

1)引用定義之後需要進行初始化;

2)引用初始化之後就不能再重新引用其他空間;

3)有空的指標,但是沒有空的引用,引用必須引用乙個合法的儲存單元。

1.值傳遞:不推薦使用,可能導致想修改某個變數的值但實際未修改;當然,若不想修改傳入的內容,可以使用值傳遞;

2.位址傳遞:若傳入的引數是 new 出來的空間,則使用位址傳遞;

3.引用:修改傳入的內容可使用引用,更安全;

1.三種: public (在任何乙個地方都可以見到)、 private (只有自己可以見到;若成員屬性沒有訪問修飾符,則預設為 private)、 protected (在自己和派生類中可以見到);

2.結構體預設的訪問修飾符是 public ;

1.建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中;特別的,乙個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們即建構函式的過載;

2.析構函式:析構函式(destructor)與建構函式相反,當物件結束其生命週期,如物件所在的函式已呼叫完畢時,系統自動執行析構函式;

3.呼叫時機:

建構函式:建立物件時進行呼叫

析構函式:在物件的生命週期結束時自動呼叫

1.棧區物件:其生命週期到作用域結束;

2.堆區物件:其生命週期 直到遇到 delete ;

3.全域性物件:其生命週期到程式結束;

4.臨時物件:其生命週期僅有這一行;

1.在每乙個成員函式中都包含乙個特殊的指標,這個指標的名字是固定的,稱為 this ,它是指向本類物件的指標,它的值是當前被呼叫的成員函式所在的物件的起始位址;

2.this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式;

3.當建立類似 cperson *p = null 的指標時,p可以進行呼叫函式,但是不可以使用成員變數;

4.成員函式是函式編譯期存在,只有乙份;

5.不同物件的引數可以在同乙個函式中使用,類會自動將呼叫函式的物件的位址傳入函式,傳入的指標就是this,指代當前的物件;

6.成員變數和成員函式是由 this 指標進行關聯的;

1.const成員變數必須在建構函式的初始化列表裡進行初始化;

2.const成員函式:不能修改類中的成員屬性;

3.常量物件:只能使用常函式,普通函式不能呼叫;

1.依賴:人能夠使用電腦進行編碼,沒有電腦則沒辦法編碼

2.關聯:朋友和人的關係

3.聚合:家庭和人的關係

4.組合:人的手和頭與人的關係

5.繼承:將父類的內容拷貝乙份到子類中

6.類之間的關係是為了進行類間的通訊

7.強弱關係:依賴 < 關聯 < 聚合 < 組合

1.public 繼承:public的成員不變,protected的成員不變,private的成員變成不可訪問;

2.private 繼承:public的成員變成private,protected的成員變成private,private的成員變成不可訪問

3.protected 繼承:public的成員變成protected,protected的成員不變,private的成員變成不可訪問;

1.先執行父類的構造,再執行子類的構造,再執行子類的析構,再執行父類的析構(類似於棧,先進後出filo);

2.在乙個類b中的成員屬性包含另乙個類a的物件,a的析構函式有引數,則執行b類的建構函式時必須在初始化列表中指定a的建構函式;

3.在自己類中成員屬性不能定義自己類的物件,但是在成員函式中可以定義自己類的物件;

1.優點:父類指標可以指向不同的子類物件,能夠提高程式的復用性;

2.卻點:不能使用子類中的成員

1.虛函式:父類的型別有多種形態

2.實現原理:虛函式列表

3.多型用處:當乙個功能有不同的實現方式時,需要用到多型

4.純虛函式:知道有函式,但目前無法確定函式的實現方式

5.介面類:所有函式都是虛函式

6.解決父類指標指向子類物件時無法使用子類中的成員問題;

7.取得虛函式列表裡的內容(這裡還是不會,因為涉及到函式指標)

1.static 成員變數只有乙份,所有物件共享,在類外進行初始化

2.靜態成員變數在編譯期存在

3.static 成員函式中只能使用 static 成員變數

1.內聯函式:內聯函式一般比較短,在程式中直接替換

2…h 標頭檔案中只放成員函式、成員屬性的宣告,靜態成員變數的初始化放到同名cpp檔案中;

3.單獨的標頭檔案不參加編譯;

4.標頭檔案重複包含

解決方法:

// (1)

#ifndef person_h

#define person_h

標頭檔案**

#endif

//person_h

// (2)在開頭加上:

#pragma once

5.#ifdef

1.物件在操作符的左側則可以在類內或類外進行過載操作符

2.物件在操作符的右側則必須在類外進行過載操作符

3.若過載的符號需要有結果,使其可以和其他符號繼續進行結合,這就要求過載操作符具有返回值

1.淺拷貝:類中有預設的拷貝建構函式,即為淺拷貝

2.深拷貝:我們可以重寫拷貝建構函式來完成深拷貝的操作

1.允許這個函式去使用類的私有成員

1.單例模式:

2.模版方法

1.函式模版

2.類模版

3.完成氣泡排序

1.迭代器可以看作乙個指標

2.1.map

2.set

3.hash_map

4.multimap

1.什麼是mfc:

1.標準訊息

2.命令訊息

3.控制項訊息

4.自定義訊息

1.標準訊息:從子類到父類

2.命令訊息:

1.程序的組成:

2.程序間通訊:

3.記憶體檔案對映:

4.記憶體管理:

5.遊戲修改器

1.執行緒的組成:

2.建立乙個執行緒:

3.掛起乙個執行緒:

4.恢復乙個執行緒:

作業系統與網路 2019 1 30

void cmodifymemory firstfind dword nfindvalue 6.完成 findonepage 函式,首先用乙個陣列來儲存查詢到的內容 dword sz buffer 1024 7.讀程序位址空間的內容,讀失敗則返回 if 0 readprocessmemory m h...

作業系統與網路 2019 3 18

int main include using namespace std include pragma comment lib,ws2 32.lib intmain if lobyte wsadata.wversion 2 hibyte wsadata.wversion 2 else printf ...

作業系統與網路 2019 3 25

void cudpnet closenet 解除安裝庫 wsacleanup bool cudpnet senddata ulong uip,const char pszsendbuffer,int nsendlen return true unsigned int stdcall cudpnet ...