一、1. 類的定義
(1)類是對具有相同屬性和行為的一組物件的抽象與統一描述。是使用者自定義的資料型別
(2)類的定義包括行為和屬性兩個部分。
(3)屬性以資料表示,行為通過函式實現。
2.c++類定義的格式
class
類名 ;
各成員函式的實現;
3.注意事項
(1)類的成員可以是其他類的物件,但不能以類自身的物件作為本類的成員,而類自身的指標和引用可以作為類的成員。
(2)類定義必須以分號「;」結束。
(3)類與結構體的區別:
沒有明確指定類成員的訪問許可權時,c++
結構體的成員是公有的,而類的成員是私有的。
4 .成員函式
類的成員函式是實現類的行為屬性的成員。
一般將成員函式宣告為函式原型,在類外具體實現成員函式。
返回值型別 類名::成員函式名(參數列)
5.物件
(1)物件是類的例項或實體。
(2)類與物件的關係,如同
c++基本資料型別和該型別的變數之間的關係。
6.類成員的訪問
物件成員的訪問包括:
●圓點訪問形式:物件名
.公有成員
●指標訪問形式
示例: #include<
iostream
>
using namespace
std;
intmax ( int
a ,
intb );
intmax ( int
a ,
intb,
intc ) ;
intmain ()
intmax ( int
a ,
intb )
intmax ( int
a ,
intb, int
c )二、
1.ø建構函式是用於建立物件的特殊成員函式
當建立物件時,系統自動呼叫建構函式
ø建構函式的作用是:
為物件分配空間;對資料成員賦初值;請求其他資源
ø沒有使用者定義的建構函式時,系統提供
預設版本的建構函式
ø建構函式名與類名相同:
類名ø建構函式可以
過載ø建構函式可以有任意型別的引數,但
沒有返回型別
2.ø析構函式是用於取消物件的成員函式
當乙個物件作用域結束時,系統自動呼叫析構函式
ø析構函式的作用是進行物件消亡時的清理工作
ø沒有使用者定義析構函式時,系統提供預設版本的析構函式
ø析構函式名為:~
類名 ø
析構函式沒有引數,也沒有返回型別
示例:為類date建立乙個建構函式。
#include >
class date
date::date(inty,intm,intd)
inline void date::showdate()
3.this指標
需要顯式引用
this
指標的三種情況(1
)在類的非靜態成員函式中返回類
物件本身
或物件的引用的時候,直接使用return*this,返回
本物件的位址時
,returnthis。 (2
)當引數與成員變數名相同時,如this->x= x,不能寫成
x = x。
(3)避免對同一物件進行賦值操作,判斷兩個物件是否相同時,使用
this指標。 三、
1.複製建構函式的特點
a) 複製建構函式名與類名相同,並且也沒有返回值型別。
b) 複製建構函式可寫在類中,也可以寫在類外。
c) 複製建構函式
要求有乙個
類型別的
引用引數。
d) 如果沒有顯式定義複製建構函式,系統自動生成乙個預設形式的複製建構函式。
2.複製建構函式的呼叫
以下三種情況下由編譯系統自動呼叫:
1. 宣告
語句中用類的乙個已知物件初始化該類的另乙個物件時。
2. 當
物件作為乙個函式
實參傳遞給函式的形參時
,需要將實參物件去初始化形參物件時,需要呼叫複製建構函式。
3. 當
物件是函式的
返回值時
,由於需要生成乙個
臨時物件
作為函式返回結果,系統需要將臨時物件的值初始化另乙個物件,需要呼叫複製建構函式。
3.類的其他成員
四、 類定義中除了一般指定訪問許可權的成員,還可以定義各種特殊用途的成員。
常成員靜態成員
友元1.
常資料成員 使用
const
說明的資料成員稱為常資料成員。
如果在乙個類中說明了常資料成員,那麼建構函式就
只能通過初始化列表
對該資料成員進行初始化,而任何其他函式都不能對該成員賦值。
2.靜態成員
ø類成員冠以static宣告時,稱為靜態成員。
ø 靜態資料成員為同類物件共享。
ø 靜態成員函式與靜態資料成員協同操作。
(1)靜態成員函式在類外定義時不用
static字首。
(2)靜態成員函式主要用來訪問同一類中的靜態資料成員。
(3)
私有靜態成員函式不能在類外部或用物件訪問。 (4
)可以在建立物件之前處理靜態資料成員。 (5
)編譯系統將靜態成員函式限定為內部連線
(在其他檔案中不可見)。 (
6)靜態成員函式中是沒有this指標的。 (7
)靜態成員函式不訪問類中的非靜態資料成員。如有需要,只能通過物件名(或指向物件的指標)訪問該物件的非靜態成員。
3.友元函式
如果在本類(
類a)以外的其他地方定義了乙個函式
(函式 b)
這個函式可以是不屬於任何類的非成員函式,
也可以是其他類的成員函式,
在類體中用friend
對其(函式b)
進行宣告,此函式就稱為本類(
類a)的友元函式。
友元函式(
函式b)
可以訪問這個類(
類a)中的私有成員
4.物件陣列的初始化
(1)當物件陣列所屬的類中包含帶參
的建構函式,可用初始化列表完成物件陣列的初始化。
(2)當物件陣列所屬的類中包含無參
的建構函式,也可以先定義,再給每個陣列元素賦值。
(3)當物件陣列所屬的類中包含單個引數
的建構函式,可簡寫。
示例:#include <
iostream>
#include
using namespace std;
class person
}; 感想:c++越往後越學越難,前半部分類的定義部分還好理解,從this指標開始就覺得聽不懂了,後邊到定義學生資訊,只能把前面的成員函式定義出來,但並不清楚怎麼進一步進行除錯。
類與物件學習總結
在大一上學期,我學習了些簡單的c語言程式,不過當時只是根據看到的題目寫出演算法來解決問題。新學期學習了類與物件之後,對程式有了新的體會。在學習類與物件時,了解了寫程式的兩種方法,一是面向過程。二是物件導向。其中面向過程我認為就是直接通過主函式或者借用其他函式,在主函式中直接寫演算法的程式。比如 he...
類與物件學習總結
類與物件 一 定義類和物件 1.一般形式 class 類名 定義類時首字母要大寫 public 公有段資料成員和成員函式 protected 保護段資料成員和成員函式 private 私有段資料成員和成員函式 此處分號不可省略!private 用於宣告私有成員。私有成員只能在類中可見,不能在類外或派...
類與物件學習總結
終於接觸到正式的c 內容了 類與物件。程式設計習慣 1 函式單一原則即乙個函式實現乙個功能 2 建構函式必須至少是兩個乙個帶參乙個不帶參,get set函式必須寫,其次寫功能函式 3 定義類的物件名首字母大寫,變數小寫,常量全大寫。除錯技巧 類每增加乙個成員函式都要在主函式中進行測試,每增加乙個功能...