2020 3 20 學習筆記

2021-10-04 05:33:34 字數 3613 閱讀 6588

1.多檔案結構和編譯預處理命令

c++程式的一般組織結構:

乙個工程可以劃分為多個原始檔,例如:

類宣告檔案(.**件);類實現檔案(.cpp檔案);類的使用檔案(main()所在的cpp檔案)

利用工程來組合各個檔案。

系統提供的類庫標頭檔案一般不帶h的,我們自定義的通常帶字尾h的。

系統提供的標頭檔案我們引用使用<>括起來,我們自己寫的標頭檔案引用使用""括起來。

用<>括起來的這樣的標頭檔案會直接去安裝時的預設目錄下尋找,用""括起來的標頭檔案會首先在當前工作目錄下尋找,如果找不到,才會到系統預設的目錄下去找。

舉例,之前的一段**如下:

#include

#include

using

namespace std;

class

point

intgetx()

intgety()

friend

float

dist

(const point &p1,

const point &p2)

;private

:int x,y;

//私有資料成員};

float

dist

(const point &p1,

const point &p2)

intmain()

將其分為三部分:point.h、point.cpp、5_10.cpp

point.h:

class

point

intgetx()

intgety()

friend

float

dist

(const point &p1,

const point &p2)

;private

:int x,y;

//私有資料成員

};

point.cpp:

#include

#include

#include

"point.h"

using

namespace std;

float

dist

(const point &p1,

const point &p2)

5_10.cpp:

#include

#include

#include

"point.h"

using

namespace std;

intmain()

namespace

}

5.標準程式庫:

標準c++類庫是乙個極為靈活並可擴充套件的可重用軟體模組的集合。標準c++類與元件在邏輯上分為6種型別:

輸入/輸出類

容器類與抽象資料型別

儲存管理類

演算法錯誤處理

執行環境支援

6.編譯預處理:

#include包含指令:將乙個原始檔嵌入到當前原始檔中該點處。

#include《檔名》按標準方式搜尋,檔案位於c++系統目錄的include子目錄下。

#include"檔名"首先在當前目錄中搜尋,若沒有,再按標準方式搜尋。

#define巨集定義指令:

定義符號常量,很多情況下已被const定義語句取代。

定義帶引數巨集,已被內聯函式取代。

#undef:

刪除由#define定義的巨集,使之不再起作用。

7.條件編譯指令

條件編譯指令——#if和#endif

#if 常量表示式

//當「常量表示式」非零時編譯

程式正文

#endif..

.

條件編譯指令——#else

#if 常量表示式

//當「常量表示式」非零時編譯

程式正文1

#else

//當「常量表示式」為零時編譯

程式正文2

#endif..

.

條件編譯指令——#elif

#if 常量表示式

//當「常量表示式」非零時編譯

程式正文1

#elif

//當「常量表示式」非零時編譯

程式正文2

#else

//其他情況下編譯

程式正文3

#endif..

.

條件編譯指令——#ifdef

#ifdef 識別符號

程式段1

#else

程式段2

#endif

如果「識別符號」經#define定義過,且未經#undef刪除,則編譯程式段1;否則編譯程式段2

所謂被定義過,其實就是通過#define命令去定義過識別符號,但是我們並不指定定義值是什麼。只要識別符號在#define中定義過,就說明我們豎起了乙個標籤,乙個記號,按這個記號所規定的意義,我們應該去編譯程式段1,否則編譯程式段2

條件編譯指令——#ifndef

#ifndef 識別符號

程式段1

#else

程式段2

#endif

如果「識別符號」未被定義過,則編譯程式段1;否則編譯程式段2

我們用這樣的條件編譯,可以在標頭檔案中設定乙個識別符號,如果沒有被定義過這個識別符號,則編譯某一段程式,同時馬上把這個識別符號定義一下,如果這個程式被多次包含的話,當第二次包含的時候,他就發現識別符號已經被定義過了,那麼重複的程式段就不會被編譯了,這樣就避免多次重複include同乙個標頭檔案的時候,造成一些類、函式、常量被重複定義的問題。

實驗五:

客戶機類:

client.h:

#ifndef client_h_

#define client_h_

class

client

;#endif

// client_h_

client.cpp:

#include

"client.h"

void client::

changeservername

(char name)

int client::

getclientnum()

main.cpp:

#include

#include

"client.h"

using

namespace std;

int client::clientnum=0;

//靜態資料成員需要在類外進行單獨的初始化

char client::servername=

'a';

intmain()

恆生測試開發筆試 2020 3 20

恆生測試開發筆試2020.3.20 第一部分c語言選擇 比較有印象的是常量指標,指標常量 1 常量指標 本質上是乙個指標,常量表示指標指向的內容,說明該指標指向乙個 常量 在常量指標中,指標指向的內容是不可改變的,指標看起來好像指向了乙個常量。const int p,int const p int ...

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...