目錄
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...