如果乙個類裡面什麼成員都沒有,簡稱為空類。但是空類中並不是什麼都沒有,任何乙個類在我們不寫的情況下,都會自動生成下面6個預設成員函式。
6個預設成員函式
1.概念
建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有乙個合適的初始值,並且在物件的生命週期內只呼叫一次。
2.特性
建構函式是特殊的成員函式,要注意的是,建構函式雖然叫做構造,但是它的主要任務並不是開空間建立物件,而是初始化物件。
特徵如下:
函式名與類名相同
無返回值
物件例項化時編譯器自動呼叫對應的建構函式
建構函式可以過載
如果類中沒有顯示定義建構函式,則c++編譯器會自動生成乙個無參的預設建構函式,一旦使用者顯示定義編譯器將不再生成
無參的建構函式和全預設的建構函式都稱為預設建構函式,並且預設建構函式只能有乙個。注意:無參建構函式,全預設建構函式,我們沒寫編譯器預設生成的建構函式,都可以認為是預設成員函式。
c++把型別分為內建型別(基本型別)和自定義型別。內建型別就是語法已經定義好的型別,自定義型別就是自己定義的型別,編譯器生成預設的建構函式就會對自定義型別成員呼叫它的預設成員函式。
1.概念
析構函式不是完成物件的銷毀,區域性物件銷毀工作是由編譯器完成的。而物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作。
2.特性
析構函式也是特殊的成員函式
特徵如下:
析構函式名是在類名前加上字元~
無引數無返回值
乙個類有且只有乙個析構函式,若未顯示定義,系統會自動生成預設的析構函式
物件生命週期結束時,c++編譯系統自動呼叫析構函式
編譯器生成的預設析構函式,會對自定義型別成員呼叫它的析構函式
1.概念
建構函式:只有單個形參,該形參是對本類型別物件的引用(一般常用const修飾),在用已存在的類型別物件建立新物件時編譯器自動呼叫。
2.特徵
拷貝建構函式也是特殊的成員函式
拷貝建構函式是建構函式的乙個過載形式
拷貝建構函式的引數只有乙個且必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫
若未顯示定義,系統生成預設的拷貝建構函式。預設的拷貝建構函式物件按記憶體儲存按位元組序完成拷貝,這種拷貝我們叫做淺拷貝,或者值拷貝。
1.運算子過載
c++為了增強**的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值型別,函式名字以及引數列表,其返回值型別與引數列表與普通的函式型別。
函式名字為:關鍵字operator後面接需要過載的運算子符號
函式原型:返回值型別operator操作符(引數列表)
注意:
將const修飾的類成員函式稱之為const成員函式,const修飾類成員函式,實際是修飾該成員函式隱含的this指標,表明在該成員函式中不能對類的任何成員進行修改
class date
const date* operator&() const
private:
int _year;
int _month;
int _day;
};
JAVA中類與物件
static是乙個特殊的關鍵字 1.static修飾的成員表明它是類共有的,而不是屬於該類的某乙個例項 2.static修飾的方法和屬性,既可通過類來呼叫,也可通過例項來呼叫 物件的this引用 1.this關鍵字是物件的預設引用,總是指向呼叫該方法的物件 2.this可以代表任何物件,當this出...
java中類與物件
class 為類的關鍵字,是用來宣告類。在類中有成員變數 構造器 或構造方法 和方法。用汽車設計圖來打比方,類就是汽車設計圖,成員變數是汽車的部件 如發動機 車門 或者屬性 如車名 方法是汽車的功能 如開車門,開啟發動機 也可以是虛擬的功能 如獲取車名 構造器就是構造一輛車 構造物件 public ...
C 類與物件(中)
類六個預設函式包括構造 拷貝構造 析構 賦值運算子過載 取位址操作符過載 const修飾的取位址操作符過載,預設生成 建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員 都有 乙個合適的初始值,並且在物件的生命週期內只呼叫一次 特性如下 1.函式名與類名...