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 命名空間的作...