C++知識整理二
前言
本次總結接上次總結。
重點
1.指標:*p是值,p是地址:
指向常量的指標 const int *p;
它告訴編譯器,“*p”是常量,不能將它作為左值進行操作;
常量指標 int x=5; int * const p = &x;
編譯器把“p”看作常量地址,所以不能做左值;
指向常量的常量指標 int x=2; const int * const p = &x;
指標和指標的物件都不能改動。
2.要輸出陣列的內容、對陣列進行升冪排序、反轉陣列的內容、複製陣列的內容等操作,需要包含標頭檔案<algorithm>
<functional>
。
3.C++提供了兩種格式控制方式:一種是使用iso_base類提供的介面;另一種是使用一種稱為操控符的特殊函式。不帶形式引數的操控符定義在標頭檔案<iostream>
中,帶形式引數的操控符定義在標頭檔案<iomanip>
中,注意:無引數的操控符函式不能帶有“()”號。
4.資料的封裝性
私有的資料成員,必須通過公有的成員函式才能使用。
5.面向物件的程式設計具有抽象、封裝、繼承和多型性等。物件稱作類的一個例項;封裝是通過存取許可權實現的;不同的物件可以呼叫相同名稱的成員函式,但可導致完全不同的行為的現象稱為多型。
6.函式引數
將物件作為函式引數 :是將實參物件的值傳遞給形參物件,這種傳遞是單向的;
void swap(string,string); //使用string類的物件作為函式引數 void main() { string str1("現在"), str2("過去"); //定義物件str1 str2 swap(str1,str2); //使用傳值方式傳遞str1 str2的資料成員值 } void swap(string s1, string s2) //string類的物件s1和s2作為函式引數 { string temp=s1;s1=s2;s2=temp; }
將指向物件的指標作為函式引數,形參是物件指標,實參是物件的地址值。當在函式中改變形參的值時,改變的就是原來實參的值。
void swap(string *,string *); //使用string類的指標作為函式引數
void main()
{
string str1("現在"), str2("過去"); //定義物件str1 str2
swap(&str1,&str2); //使用傳地址值方式傳遞str1 str2的地址值
}
void swap(string *s1, string *s2) //string類的物件指標s1和s2作為函式引數
{
string temp=*s1;*s1=*s2;*s2=temp;
}
引用作為函式引數:在函式呼叫時,實參物件名傳遞給形參物件名,改變形參物件的值就是改變實參物件的值。
void swap(string&,string&); //使用string類的引用物件作為函式引數
void main()
{
string str1("現在"), str2("過去"); //定義物件str1 str2
swap(str1,str2); //傳遞物件的名字:str1 str2 必須使用物件名
}
void swap(string &s1, string &s2) //string類的引用物件s1和s2作為函式引數
{
string temp=s1;s1=s2;s2=temp;
}
函式返回值作為函式的引數
7.函式返回值
C++函式的返回值型別可以是除陣列和函式以外的任何型別。
返回引用的函式
返回指標的函式
返回物件的函式
8.行內函數
使用關鍵字inline說明的函式稱為行內函數。除具有迴圈語句、switch語句的函式不能說明為行內函數外,其他函式都可以說明為行內函數。使用行內函數能加快程式執行速度,但是如果函式體語句多,則會增加程式程式碼的大小。所以,行內函數應該:語句少,並被頻繁呼叫。
如果在宣告類的同時,在類體內給出成員函式的定義,則預設為行內函數。如:
int GetX() { return x; }
則GetX為行內函數。
9.函式過載
函式過載的區別有3個:一是引數型別不同,二是引數個數不同,三是const。僅有函式返回值不同是區分不了過載函式的。
10.靜態聯編和動態聯編
動態聯編(遲後聯編)直到程式執行時才能確定呼叫哪個函式;支援的多型性稱為執行時的多型性,由虛擬函式支援。
靜態聯編(先期聯編)編譯時進行的;支援的多型性稱為編譯時的多型性。
總結
先整理這麼多吧,都是當時考試的時候重點複習的,希望明年這個時候可以幫到大家,我還會繼續總結的。