前言
本次總結接上次總結。
重點
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.靜態聯編和動態聯編
動態聯編(遲後聯編)直到程序運行時才能確定調用哪個函數;支持的多態性稱爲運行時的多態性,由虛函數支持。
靜態聯編(先期聯編)編譯時進行的;支持的多態性稱爲編譯時的多態性。
總結
先整理這麼多吧,都是當時考試的時候重點複習的,希望明年這個時候可以幫到大家,我還會繼續總結的。