從C語言到c 的過渡

2021-09-11 05:34:05 字數 1736 閱讀 6474

c++對c語言中設計不合理的地方的改進

c++98相關的知識點   c++98中進行過對c語言的語法做成模板的方式,包括標頭檔案時可以  .h 

98以後這種方案就被拋棄了

c++11相關的知識點

關鍵字:c99有32個。c++98繼承c語言,有63個關鍵字,

c++ 對c語言有那些拓展?

擴充了物件導向的概念,高度抽象化

c++對c語言的增強

命名空間(namespace)的概念,作用

作用:解決命名重名(名字汙染)的衝突,可以把所有可能會發生命名重名的東西,都放入到命名空間裡

乙個命名空間就定義了乙個作用域,命名空間裡的所有內容都被限定到該作用域裡了

iostream提供了乙個叫命名空間的東西,標準命名空間的名字叫std

屬於c++裡的一種新的作用域  

普通的命名空間

巢狀的命名空間

命名空間的三種使用方法:

命名空間的名字 :: 成員名字(::是作用域限定符,用於呼叫全域性變數的那個變數) 

使用場景:命名空間裡的成員在檔案裡偶爾被使用

肯定不會產生衝突(同乙個工程中可以定義多個相同名稱的命名空間,編譯器會將相同名字的命名空間合併成乙個命名空間來使用)

使用  using 命名空間:: 成員名字;  來匯出成員名字  (使該命名空間裡的成員變就相當於檔案裡的全域性變數)

會造成命名衝突的問題,因為全域性作用域裡可能有與該成員重新命名的變數

適用於場景:當前命名空間裡的個別成員被多次在某個檔案裡被多次使用

1. using std:: cout;

2. using std:: endl;

3. using std:: cin;

3.    using namespace std;   這是將命名空間裡的所有成員都匯出來的方法

當前命名空間中某個成員在某個檔案裡使用的次數比較多

缺陷:發生命名衝突的衝突率比較多(因為相當於將命名空間)

輸入輸出方式:  printf ,scanf 與 cout ,cin的區別

printf 要輸入大量的字串,不會進行檢測

scanf會被報不安全,比如沒有放取取位址符,在編譯期間不會檢測,但是在程式執行期間就會報錯

cout  使用  << 來進行分割字串,可以用「\n"字元來換行,也可以使用endl (在標準命名空間裡被命名,因此使用的時候要使用標準命名空間) 可以形象的理解為從 cout << 內容  從內容流向cout,再從cout流向控制台

同理:cin>> 內容 ,內容是從鍵盤流向cin,再從cin流向控制台

c++裡對函式型別與返回值有嚴格的檢查,比如省略返回值型別,c語言會預設用int型別,c++會進行報錯,即使是沒有返回型別,也要嚴格的定義為void

預設引數分類    來自於備胎思想,提供返回值,就用返回值,不提供就使用預設值

全預設引數

半預設引數:只有部分引數帶有預設值

名字修飾規則區別:

c++裡有函式過載-->可以理解為一詞多義,比如可以用於寫乙個通用型別函式

函式名字相同,**的引數列表不同,而在c語言裡這樣寫就會報函式重定義

重定義條件:函式名字相同,在同乙個作用域

是否形成過載,與函式返回值型別是否相同,沒有關係

引數列表不同:引數的個數,引數的型別不同,引數的次序不同

除錯工具:c--> gcc

c++-->g++

endl:語句結束,用於c++的輸出流的換行

引用類和物件,有面向過程向物件導向的轉變

c到c 的過渡

1.c到c 的過度 1 2.類和物件 2 3.繼承與派生 1 4.運算子過載 1 5.多型 1 6.函式模板與類模板 1 7.異常與檔案 1 c 的基本知識 8.stl 標準模板庫 2 9.設計模式 2 10.qt 2 mysql 1 1.彙編 低階語言 可以直接操作硬體 mov移植性差 第一代高階...

從C語言到C 語言

c 讀作 c加加 是 c plus plus 的簡稱。顧名思義,c 是在c語言 的基礎上增加新特性。從語法上看,c語言是 c 的一部分,c語言 幾乎不用修改就能夠以 c 的方式編譯。對於c和c 的關係,有很多種說法,新人很容易認為c 是c的公升級版,c 比c要高階,c 高大上,c過時了,這種想法不一...

從C過渡到C

案例 輸出hello world include using namespace std int main int main 函式過載 函式名相同只有引數 個數或者型別 不同。命名空間 include namespace scope1 namespace scope2 int main 命名空間的作...