第二週學習總結 C到C

2021-10-22 22:11:33 字數 2067 閱讀 6918

一.物件導向與面向結構的區別:

擴充套件性:可以新增新功能

維護性:後期對於**的維護比較方便,能夠準確定位

復用性:功能**復用

以上所述為**質量高的表現,而物件導向的有點恰恰是這三個性質較好,相對而言面向結構的這三個性質就較差。從系統層面上來講,物件導向在解決巨集觀任務上會優於另乙個。

物件導向的三大特點分別為:封裝,繼承,多型,又分別對應維護性,復用性,拓展性。

封裝:就是把屬性和方法都放在乙個類裡面,而且還可以通過訪問類的許可權屬性給區分開,更加安全,不想要釋放的功能,直接搞成私有機制,正好符合軟體架構裡面高內聚低耦合,自己內部的事情就不要暴露出來,外部介面盡量簡單,所以在設計上就符合軟體設計的理念,封裝性還具有安全性,不想讓外部訪問的時候可以遮蔽。

繼承:就是把之前已經實現好的**或者方法通過繼承的方法拿過來使用,能節省大量的**量,符合**設計裡面的繼承優秀**特性,而且寫好的類還能給後來的人繼續使用。

多型:由於可以繼承多個類,能夠組合成多種特性,但多型的關鍵是覆蓋,就是同乙個方法可以用不同的方式去實現,展現出多型性。

二.c++對c的加強

1.命名空間:

(1)命名空間的概念與作用:命名空間就是為解決c++中的變數、函式的命名衝突而服務的。解決的辦法就是將你的變數定義在乙個不同名字的命名空間中。

命名衝突是產生於多人協同開發的場景中的。

在c語言中解決命名衝突的辦法是使用static關鍵字

static關鍵字的作用:

修飾區域性變數,延長生命週期直到整個程式

修飾全域性變數,使其只能在本檔案中使用

修飾函式,使其只能在本檔案訪問

void

func()

intmain()

上述**中的num只在當前函式中生效,函式呼叫過後就會被釋放,所以該程式執行的結果為

666

若修改為以下**:

void

func()

intmain()

則輸出結果為

678

在修飾全域性變數和函式時,static修飾的內容不受extern影響,僅可以在本檔案使用。

在c++中解決命名衝突的辦法是使用命名空間

namespace a

}

命名空間的本質上是在每乙個變數和函式前加上static,使用命名空間後其中的變數與函式也僅可在本檔案訪問。如果在另乙個檔案中定義乙個相同名稱的命名空間,在其內部變數不重名的情況下兩個命名空間會合併。在沒有匯入命名空間時使用命名空間需要加上域解析符::,而匯入後則可以省略。

注意:原始檔不可以訪問其他原始檔的命名空間。

注意:命名空間可以巢狀定義,使用時也是巢狀使用。

2.輸入與輸出

在vs2019環境下預設支援c語言中的printf,但是對於scanf會報錯,原因是編譯時對於scanf的輸入不會檢測,有時候會造成越界,解決辦法有兩種,一種是使用scanf_s,另一種是在開始加上巨集#pragma warning(disable:4996)

#include

#include

#pragma warning(disable:4996)

using

namespace std;

intmain()

此**執行過程中會直接跳過讀取char,char讀取的是上乙個scanf裡面輸入的回車,解決辦法是加上乙個getchar()把上乙個回車讀走重新整理緩衝區。

在c++中使用cin與cout來輸入與輸出,使用方法如下

#include

#include

#pragma warning(disable:4996)

using

namespace std;

intmain()

同理,printf也可以替換成cout << << endl;

在輸入帶有空格的字串的時候要使用cin.get(),遇到回車停止讀取。

第二週C語言學習總結

迴圈使我們這週的重點內容,其中迴圈包括while迴圈和for迴圈,這兩者出了用法不同以外,寫的格式也不同。其中for用於負責迴圈次數明確的情況,而while用於只有迴圈條件而沒有迴圈次數的情況。舉個題目例子 輸入乙個數 1234 倒序顯示 4321 include int main printf d...

c學習第二週周記

1 用c編寫教務管理系統 2 結束c的學習 開始幹 主要分為三個部分來實現設計的 登陸介面 選單見面 section 專案a 任務1 班級資訊管理系統 任務2 教師資訊管理 任務3 學生資訊管理 任務4 課程資訊管理 任務5 成績資訊管理 選單介面的子介面 前面的準備工作,所需要用到的資料進行相應的...

C 第二週學習筆記

列舉型別和int型別的相互轉換 列舉型別和int型別相互相容,所以可以進行強制型別轉換 列舉型別,裡面預設儲存的是int。修改列舉型別 例 enmu qqstate short 在宣告列舉 名字後面 short int轉列舉。根據列舉的值進行轉換,如果值不存在,就不轉換,也不報錯。列舉型別和stri...