C 第三章 類和物件知識點總結(複習)

2021-09-19 03:38:00 字數 4948 閱讀 1379

目錄

1.成員

2.物件(成員訪問,初始化方式)

3.物件陣列和物件指標

4.string類 

5.物件作為函式引數

6.拷貝建構函式

7.靜態成員

8.友元

9.常型別

1.比較特殊的成員型別:protected.

保護成員在本類中和private型別的成員作用一模一樣。區別在於保護成員可以由本類的派生類的成員函式訪問,但是私有成員在其派生類中無法訪問。

2.成員函式的定義

成員函式如果在類外定義,那麼函式宣告的參數列可以只寫引數型別,但是在類外定義時必須給出引數名。

3.內聯成員函式

(1)隱式定義內聯成員函式

直接在類內定義的成員函式  

(2)顯式定義內聯成員函式

用關鍵字inline

宣告(在宣告和定義的語句句子開頭加inline),此時可以在類內宣告,類外定義。宣告、定義都要在句首加inline.

(3)內聯函式

內聯函式的**會在編譯時插入到每乙個呼叫它的地方。這種做法會提高執行效率。但是只有很簡短的**才實用。

1.物件成員的訪問方式:

例如對物件d中成員year的訪問

d.year    (*p).year    p->year

2.物件的初始化

(1)

class complex

;complex c=;

(2)用建構函式(作用:為物件分配空間,進行初始化)

例如:

...

class complex

private:

double real;

double imag;

};int main()

注意:1.建構函式也可以過載。但是呼叫無參的建構函式時應該 complex a,不能complex a()

2.定義建構函式後,系統將不再提供預設建構函式。所以對於帶引數的建構函式,在定義物件時必須給建構函式的形參傳值,否則建構函式將不會被執行。

3.but...建構函式可以設定預設引數解決這個問題,例:complex(int a=0,int b=0) 在定義物件時如果complex a;

此時預設值和形參結合,不會出現 2 的情況。注意預設引數必須在建構函式宣告時設定。乙個程式只能設定乙個預設建構函式。:complex(int a=0,int b=0)和complex()只能有乙個,不然執行complex a;時會出錯。

一般不要同時使用函式的過載和有預設引數的建構函式:complex(int a=0,int b=0);complex(int a);complex s(1)此時會出現二義性。               

4.與建構函式對應的有析構函式。沒有引數,不能被過載,且乙個類只能有乙個析構函式。

(3)成員初始化列表

這種方法不在函式體內用賦值語句進行初始化,而是在函式首部實現的

接著上面的例子:...

... 

public:

complex(int x,int y):real(x),imag(y)

...//或者建構函式在類體外定義時候成員初始化列表也可以

complex::complex(int x,int y):real(x),imag(y)

注意:資料成員是按照在類中宣告的順序初始化的,和在成員列表中的排列順序無關。

const修飾的和引用型別的資料成員都不能用建構函式直接初始化,只能用成員初始化列表。因為const修飾的資料只能初始化,不能賦值,建構函式中賦值的過程;

優點:主要是效能問題,對於內建型別,如int, float等,使用初始化類表和在建構函式體內初始化差別不是很大,但是對於類型別來說,最好使用初始化列表,為什麼呢?使用初始化列表少了一次呼叫預設建構函式的過程,這對於資料密集型的類來說,是非常高效的。

1.物件陣列:complex a[3]=;

2.物件指標:指向物件的指標也可以指向物件陣列。

3.this指標

每當建立乙個物件的時候,系統就把this指標初始化為指向該物件,即this指標的值是當前呼叫成員函式的物件的首位址。

例如:執行a.show()就相當於this->show()

1.string在c++標註庫中已經宣告,可以直接定義string類的物件。使用string類物件是程式開頭必須加上#include

2.初始化 string str1("china")或者string str1="china"都可以。

3.使用string類可以直接進行基本的運算。

s1=s2

賦值s1+=s2

s1=s1+s2

s1+s2

合成新串

s1==s2

判斷s1!=s2

判斷s1<(>\>=\<=)s2

判斷s1[i]

訪問字串物件s1中下標為 i 的字元

cin>>s1

輸入輸出

1.物件,物件指標,物件引用都可以作為函式的引數。區別如下:

物件作為函式引數的三種形式 物件

傳值呼叫傳遞給函式,單行傳遞,只由實參傳遞給形參,而不能由形參傳回給實參。即在此函式中一定不會影響實參本身。

物件指標

傳址呼叫,實參形參物件指標都指向同意物件

物件引用

也可以改變實參

跟基本變數做引數的傳遞規則相同。

1.作用:在建立乙個新物件時,使用乙個已經存在的物件去初始化新物件。

2.特點:

(1)只有乙個引數,並且時同類物件的引用。

(2)可以自定義,如果自定義,系統會自動生成乙個預設拷貝建構函式。

3.拷貝建構函式的定義,呼叫用乙個例子說明:

...

class point

point(const point &p) //拷貝建構函式的定義格式

//自定義

private:

int x,y;

};int main()

注意:在通常情況下拷貝建構函式能勝任,但如果類中有指標型別時,呼叫時可能會產生錯誤。

4.呼叫拷貝建構函式的三種情況(普通建構函式在物件被建立時候呼叫)

(1)當用類的乙個物件去初始化了另乙個物件時

(2)當函式的形參是物件時,實參和形參相結合的時候

(3)但函式的返回值是類的物件。在函式呼叫完畢,形參物件帶回時,此時會呼叫拷貝建構函式,將此物件賦值給乙個臨時物件並傳到該函式的呼叫出。//也就是說如果自定義了拷貝建構函式此時返回的物件要小心了。。。

1.目的:實現乙個類的多個物件之間資料共享。

2.靜態成員屬於類不屬於某個物件,在任何物件建立之前就已經存在。

3.用乙個例子說明靜態資料成員的定義,初始化和呼叫。

#includeusing namespace std;

//我家的小貓

class cat

static void disp() //靜態成員函式的定義在句子前加static

{cout<4.靜態成員的其他知識點

(1)一般情況下靜態成員函式用來訪問靜態資料成員,當一定要訪問非靜態成員時必須通過物件名訪問。 

(2)靜態成員函式沒有this指標。

1.友元函式

作用:使得不屬於該類的函式可以訪問該類的成員。完成乙個函式訪問多個類的任務。

定義:就是普通函式,該怎麼定義還怎麼定義,只不過要在類中宣告。形式:friend+正常的宣告形式;

乙個類的成員函式也可以定義為另乙個類的友元函式;在另乙個類宣告時句首加friend即可。

特殊點:引數必須是物件名(物件引用等等)。因為他不是類的成員,不能直接訪問物件的資料。

2.友元類

實質:當乙個類宣告為另乙個類的友元類,該類的雖有成員函式都是另乙個類的友元函式。

特點:單向並且不可傳遞

使用方式:作為友元類的類,在另乙個類中宣告 friend+友元類名  即可

3.物件成員:物件也可以作為乙個類的成員。和一般變數的定義方法相同。不過有物件成員的類的建構函式定義有所變化,

定義時首句後面要加:物件成員的建構函式(類似成員初始化列表)線呼叫物件成員的建構函式,再呼叫類的建構函式。如果在類外定義,宣告時不用加:物件成員的建構函式 。在定義有物件成員的類時,要先定義好作為成員的物件。

作用:保證資料共享又防止資料被改動。實際應用中,常用常引用作為引數。用const修飾,實參函式內保護能改變,函式外卻可以。

常物件:資料成員在整個生存期內不允許改變,定義時必須初始化。c++不允許常物件呼叫普通的成員函式,為了確保不改變資料,只能呼叫常成員函式。

說明形式:類名 const 物件名[參數列]; const 類名 物件名[參數列];

常資料成員:定義時句首加const的資料成員。建構函式只能通過成員初始化列表對其進行初始化。其他任何函式都不能對其賦值。不同物件中的常資料成員可以不同。

常成員函式:在該函式中一定不會影響資料成員的值。關鍵字const也可以用來區分函式過載。

定義和宣告:定義和宣告時都必須在句末加const,呼叫時不用加。

特性:常成員函式可以訪問常資料成員也可以訪問普通資料成員.(反正都不會改變) ;

常資料成員既可以被常成員函式訪問也可以被一般成員訪問。(反正不會變);

常物件的資料成員只能夠被常成員函式訪問;

為了確保常成員函式不改變資料成員的值,不能呼叫類中的普通成員函式。

Java知識點總結第三章

選擇語句 比較運算子 結果為布林值 大於 大於等於 小於 小於等於 等於 不等於!邏輯運算子 雙與 有假則假 同真則真 雙或 有真則真 同假則假 非 取反 單與 單或 異或 選擇語句if語句 1 單if語句 aif 條件 c條件為真 a b c 條件為假 a c 2 if else語句 a if 條...

第三章 表單 知識點

1.表單主要用來製作動態網頁,方便和使用者進行互動。例如,會員註冊,購物訂單,調查問卷,搜尋等頁面都會用到表單。2.常用的表單元素有文字框 text 密碼框 password 單選按鈕 radio 核取方塊 checkbox 列表框 和 按鈕 button,submitreset 多行文字框 郵箱 ...

jQuery第三章知識點

使用getelement系列方法訪問指定節點 getelementbyid getelementsbyname getelementsbytagname 根據層次關係訪問節點 parentnode 返回節點的父節點 childnodes 返回子節點集合,childnodes i firstchild...