1. 程式人生 > >C++知識整理二

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.靜態聯編和動態聯編

  動態聯編(遲後聯編)直到程式執行時才能確定呼叫哪個函式;支援的多型性稱為執行時的多型性,由虛擬函式支援。
  靜態聯編(先期聯編)編譯時進行的;支援的多型性稱為編譯時的多型性。

總結

  先整理這麼多吧,都是當時考試的時候重點複習的,希望明年這個時候可以幫到大家,我還會繼續總結的。