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...