第一章 C 對C的擴充套件 5

2021-10-13 12:46:18 字數 1777 閱讀 8266

命名空間為了大專案開發,而引入的一種避免命名衝突的一種機制。比如說,在乙個大型的專案中,要用到多家軟體開發商提供的類庫。在事先沒有約定好的情況下,兩套類庫可能在存在同名的函式或是全域性變數而發生衝突。專案越大,用到的類庫越多,開發人員越多,這種衝突就越明顯。

global scope 是乙個程式中最大的scope。也是引起命名衝突的根源。c語言沒有從語言層面提供這種機制來解決。也算是c語言的硬傷了。global scope是無名的命名空間。

//c語言中如何訪問被區域性變數覆蓋的全域性變數

int val = 200;

int main()

#include #include using namespace std;

int val = 200;

void func()

int main()

; 函式 void func();

其他命名空間namespace

}

1、直接定義 命名空間: space::a = 5;

2、使用 using+命名空間+空間元素: using space::a; a = 2000;

3、使用 using+namespace+命名空間: using namespace space;

#include #include using namespace std;

namespace myspace

int main()

namespace other

int main()

}int main();}

#endif //a_h

a.cpp

#include "a.h"

namespace xx

a::~a()

}

b.h

#ifndef b_h

#define b_h

namespace xx

}#endif //b_h

b.cpp

#include "b.h"

namespace xx

b::~b()

}

main.cpp

#include #include "a.h"

#include "b.h"

using namespace std;

using namespace xx;

int main()

除了使用字串陣列來處理字串以外,c++引入了字串型別。可以定義字串變數。

#include #include using namespace std;

int main()

;for (int i=0; i<10; i++)

{ cout在c++中幾乎不需要用巨集,用const或enum定義顯示的常量。用inline避免函式呼叫的額外開銷,用模板去刻畫一族函式或型別,用namespace去避免命名衝突。

不要在你需要變數之前去宣告,以保證你能立即對它進行初始化。

不要用malloc,new運算子會做的更好。

避免使用void *、指標算術、聯合和強制,大多數情況下,強制都是設計錯誤的指示器。

盡量少用陣列和c風格的字串,標準庫中的string和vector可以簡化程式。

更加重要的是,試著將程式考慮為一族由類和物件表示的相互作用的概念,而不是一堆資料結構和一些可以撥弄的二進位制。

第一章 C 程式設計

今天終於下定決心將資料結構與演算法重新在複習一遍,先是c 的一些比較容易忘記的特性簡單的溫習一遍 包括遞迴呼叫,異常操作,類模板,函式模板等等,這三天寫得原始碼如下 book name c structure and algorithm filename chapter1.cpp version 1...

C 第一章作業

n實驗作業 1.編寫調式執行第乙個c 程式,要求輸出你的班級 姓名和學號 2.輸入課本例題1.2,除錯執行程式,並分析程式。3.分析程式中哪些是識別符號,哪些是關鍵字。4.回答什麼是程式 工程,原始檔 目標檔案 執行檔案 編譯預處理 名字空間 函式.主函式。作業一 include 編譯預處理命令 u...

第一章 C 簡介

1.net framework包含了龐大的 庫和.net framework公共語言執行庫 common language runtime,clr 2.net平台整體架構 1.使用.net framework編譯 的兩個階段 c 通用的中間語言 common intermediate languag...