一.物件導向與面向結構的區別:
擴充套件性:可以新增新功能
維護性:後期對於**的維護比較方便,能夠準確定位
復用性:功能**復用
以上所述為**質量高的表現,而物件導向的有點恰恰是這三個性質較好,相對而言面向結構的這三個性質就較差。從系統層面上來講,物件導向在解決巨集觀任務上會優於另乙個。
物件導向的三大特點分別為:封裝,繼承,多型,又分別對應維護性,復用性,拓展性。
封裝:就是把屬性和方法都放在乙個類裡面,而且還可以通過訪問類的許可權屬性給區分開,更加安全,不想要釋放的功能,直接搞成私有機制,正好符合軟體架構裡面高內聚低耦合,自己內部的事情就不要暴露出來,外部介面盡量簡單,所以在設計上就符合軟體設計的理念,封裝性還具有安全性,不想讓外部訪問的時候可以遮蔽。
繼承:就是把之前已經實現好的**或者方法通過繼承的方法拿過來使用,能節省大量的**量,符合**設計裡面的繼承優秀**特性,而且寫好的類還能給後來的人繼續使用。
多型:由於可以繼承多個類,能夠組合成多種特性,但多型的關鍵是覆蓋,就是同乙個方法可以用不同的方式去實現,展現出多型性。
二.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...