c++重點語法彙總(1)
繼承性
從繼承源上看,繼承可分為單一繼承和多重繼承兩種
C++語言和C語言的關係
-
作為面向過程的程式設計語言(C語言),C++語言與C語言的關係可以用繼承和改進來概括
-
C語言是C++語言的一個子集
-
C語言的指標在C++語言中一樣使用,但是C++語言在動態記憶體空間的管理上引入了更方便地方式,C++語言通過增加引用大大減少了不安全指標的引用
-
C++語言增加了行註釋符,為單行註釋提供了方便
-
C++語言引入了名字空間,防止同名的衝突問題
-
C++語言建議使用const關鍵字來定義符號常量,使常量具有型別,解決了巨集定義下的符號常量無型別說明的問題
-
C++語言規定函式說明必須使用原型宣告方式,不允許使用簡單說明方式
-
C++語言允許區域性變數隨用隨定義,不必侷限在語句塊的開頭定義,更加靈活
-
C++語言允許函式的形式引數帶有預設值,這給函式的呼叫帶來方便
-
C++語言引進了函式過載和運算子過載機制,方便了程式設計
-
C++語言引進了行內函數,建議使用行內函數代替帶引數的巨集定義,增加了對引數型別的說明
-
C++語言引進了引用的概念,使得可以通過變數的別名直接操作變數本身,而不必通過指向變數的指標間接操作變數,這樣大大減少了指標的使用,提高了安全性
-
C++語言利用指標使用new和delete運算子代替函式更方便地進行動態記憶體空間的分配和釋放
-
C++語言提供了異常的檢查、處理機制,提高了程式的健壯性
輸入和輸出
在程式中要想直接使用cin和cout,必須做正確的檔案包含:#include<iostream>及using namespace std;或#include<iostream.h>
函式過載
-
在C++語言中,對於功能完全相同或相似,只是在形式引數的個數、型別、順序方面有區別的不同函式以相同的函式名來命名,該同名函式稱為被過載,形式引數的個數、型別、順序的某一個方面或幾個方面必須有所區別,返回值的型別是否相同並不是函式過載的判斷條件
-
過載錯誤:void Fun(int=3);與void Fun();二者雖然形式引數的個數不同,但是由於預設值,如果呼叫時不提供實參則無法判斷呼叫的是哪一個函式
-
過載錯誤:void Fun(int);與void Fun(int&);二者是值形式引數與引用引數的區別,這時如果呼叫Fun(a)則無法判斷呼叫的是哪一個函式
用new申請動態記憶體空間
-
在C++語言中,新增加的關鍵字new是一個運算子而不是一個庫函式。使用new運算子可以更簡單的申請動態儲存空間具體形式是:new 資料型別名;或 new 資料型別名 【整型常量】;int *ptr ; ptr = new int ;(利用new申請一個Int大小的記憶體空間,指標指向起始地址) ptr = new int [10] {利用new申請連續10個int大小的記憶體空間實現動態一維陣列}
-
有一種形式容易與申請陣列空間混淆,ptr=new int(10),語句等效於以下兩條語句:ptr=new int;和*ptr=10;表示在申請一個int大小的記憶體空間的同時向該空間中賦值10
用delete釋放動態記憶體空間
-
在C++語言中,使用delete運算子來釋放動態記憶體空間,具體形式為:delete 指標變數名;或delete 【】指標變數名;分別用於釋放單個動態記憶體空間和一維陣列空間,當用ptr = new [10];申請動態記憶體空間,如果用delete ptr;釋放,編譯器不會報錯,但是十分危險,因為delete ptr;只能實現釋放由ptr指標所指向的當前一個int大小的動態記憶體空間,其後連續的其他9個int動態記憶體空間將無法釋放,這會導致記憶體洩漏
-
delete也是C++語言中新增加的的關鍵字,也是一個運算子而不是庫函式
-
在C++語言中,在使用new 或 new[]申請了動態記憶體空間後,一旦這部分動態記憶體空間使用結束,一定要及時使用delete或delete[]釋放空間,否則會產生記憶體垃圾,影響程式的正常執行,還可能導致宕機