十三)類的操作

2021-06-09 23:41:23 字數 1411 閱讀 1556

1、物件的建立:有七種a a(3),b=3,c=a(3),d(a),e=a,*f=new a(3),*h=new a(a),a=;

2、指標與引用

一:指標,物件使用指標:用->進行操作;作為函式的引數;作為類的資料或成員。

二:引用,傳送大物件要比按值傳送更快,避免了複製過程,拷貝建構函式就是利用這點。

3、前向宣告:當類a中使用了類b,類b中又使用了類a,那麼總有乙個要使用未宣告的,於是將未宣告用class a;的放在前面稱前向宣告。

4、const成員函式,使用時不能改變資料成員值,同時呼叫也只能呼叫const的成員函式。

5、巢狀類:類a中包含了類b的宣告及定義,稱為巢狀類。 主要目的是限制類b在外部使用。

與類的組合是有區別的,這時並沒限制各自的使用。

巢狀類在定義時,需要兩個限定,例: int  a::b::show();一般內部類b的成員都宣告為公有。

6、拷貝建構函式:函式若無拷貝建構函式,編譯器會提供預設拷貝建構函式。預設的拷貝建構函式會把原物件的資料成員的值複製到新建物件的對應資料成員中。

定義:  type::type(const   type&  object)

只能是引用,如果不是引用,當呼叫它時,會複製引數,這個過程就是拷貝複製函式過程,這樣就會無限迴圈下去,無解!!!

用const來說明,它只是建立新的副本,不會修改原物件。

如何禁止拷貝複製函式?

把拷貝建構函式宣告為類的私有成員,可阻止類外使用它,並且阻止編譯器生成預設的拷貝複製函式。當然類內部是可以用的:)

7、析構函式的前夜:

動態建立的成員在自由儲存區。**分割槽了記憶體,就應負責釋放。總應在物件位址消失前,手動釋放物件在自由儲存區中的記憶體。否則會越建越大,導致程式失敗。

注意:程式執行完畢後,儘管我們沒有手動釋放動態記憶體,但作業系統總是會重新分配記憶體。我們只是考慮程式退出前的狀況。

上面只是針對析構函式而言,對於new乙個物件,它的過程與上面不一樣:

new先分配記憶體空間,並呼叫建構函式建立該物件。這裡,不是建構函式來分配的內在空間,而是呼叫建構函式的**分配記憶體空間。不用時直接delete刪除。

8、析構函式:同拷貝建構函式一樣,編譯器總會提供乙個預設的析構函式,其實它什麼**也沒有,什麼也沒有做。而且預設的析構函式不會釋放在類物件中分配的自由儲存區的記憶體,因為這是你建立的,你就得去釋放,正所謂誰拉屎誰擦屁股。

定義:  type::~type( ) ;   //注意:析構函式是沒有返回型別和引數的,若指定它們會出錯。

預設的析構函式沒有顯式的宣告,如果沒有顯示提供析構函式,編譯器就生成預設的析構函式,它是乙個公共或內聯的析構函式。

注意:物件的析構順序與建立相反,先建立的物件最後釋放。

9、引用除了作為引數(如拷貝建構函式)外,還可作為資料成員,雖然不常見

作為資料成員,唯一注意的是,它的初始化,不是用賦值,而必須是用列表法

python自學(十三) 類的繼承

類是可以繼承的,python也不例外 直接將父類作為引數來宣告乙個新類 class student object 這裡就是指,預設的類的宣告,就是繼承自object def init self pass 子類直接具有了父類的屬性和方法 但是當子類宣告和父類相同的方法時,會覆蓋父類的方法,這種行為被稱...

Python學習筆記(十三) 類

本節主要對python中類的概念進行介紹。類完全由物件導向概念所引出。定義乙個類 class people 幫助資訊 number 100 建構函式,初始化方法,當建立乙個類的時候,首先會呼叫它 def init self,name,age self.name name self.age age d...

python學習筆記(十三)類的繼承與匯入

1 繼承 類的繼承幫助我們簡化了類的編寫,這裡我們先來理解一下繼承的概念。乙個類繼承另乙個類時,它將自動獲得另乙個類的所有屬性和方法,被繼承的類是父類,繼承得到的類是子類。我們可以將子類視為父類的特殊化,它在類的定義中對父類的屬性和方法進行了特殊化的補充 實際上也可以什麼都不補充,但這樣做繼承就沒有...