類和物件(2) 預設成員函式

2021-09-27 01:34:53 字數 2630 閱讀 8058

在前面我詳細介紹了類和物件的一些基本語法,類和物件(1),在本章部落格中繼續深入討論類的六個預設成員函式。如果乙個類中什麼成員都沒有,簡稱為空類。空類中什麼都沒有嗎?並不是的,任何乙個類在我們不寫的情況下,都會自動生成下面6個預設成員函式。

一、建構函式

class date

date

(int year,

int month,

int day)

void

printdate()

private:

int _year;

int _month;

int _day;};

intmain()

class date

void

printdate()

private:

int _year;

int _month;

int _day;};

intmain()

class date

*/private:

int _year;

int _month;

int _day;};

intmain()

class date

private:

int _year;

int _month;

int _day;

};

class time

private:

int _hour;

int _minute;

int _second;};

class date

;int

main()

執行結果(可以看到編譯器預設生成的建構函式對自定型別成員呼叫的它的預設建構函式)為:

;//或者:

class date

;上面兩種方法都可以宣告成員變數,第一種是常見的,第二種是 c++11 之後的方法,給成員變數預設的預設值。但是注意上面兩種方法都是對成員變數的宣告。二、析構函式三、拷貝建構函式四、賦值運算子過載4.1、運算子過載

4.2、賦值運算子過載

注意:關於拷貝構造與賦值運算子過載的兩種情況:

情況1:

t t1;

t1 =f3(

);情況2:

t t1 =f3(

);

情況1:因為在 t1 = f3(); 之前已經建立 t1 這個物件,所以 這個 = (賦值符號)是賦值。

情況2:雖然是賦值符號,但是 t1 物件在執行這行**之前並沒有被建立,所屬於拷貝構造。

兩種情況**舉例:

class

date

date

(const date& d)

date&

operator=(

const date& d)

private

:int _year;

int _month;

int _day;};

intmain()

五、const 成員5.1、const 修飾類的成員函式

class date

void

display()

const

private:

int _year =

1990

;int _month =1;

int _day =1;

};intmain()

四、幾個常見的問題

(1)const物件可以呼叫非const成員函式嗎?

(2)非const物件可以呼叫const成員函式嗎?

(3)const成員函式內可以呼叫其它的非const成員函式嗎?

(4)非const成員函式內可以呼叫其它的const成員函式嗎

六、 取位址及 const 取位址操作符過載

class date

const date* operator&()

const

private:

int _year;

int _month;

int _day;

};

類和物件(預設成員函式)

建構函式不是開空間建立物件,而是初始化物件,更嚴謹的說是賦初值 特性初始化列表 class date private int year int month int day explicit 析構函式不是完成對物件的銷毀,區域性物件銷毀由編譯器完成,而在物件銷毀時會呼叫析構函式,完成類的一些資源清理工...

C 類和物件及其預設成員函式

類和物件的一些基礎 類是對乙個事物的描述,可以看做成乙個型別 int.char等 他並沒有分配空間。物件是類定義出來的乙個實物。類的成員訪問限定符 public 公有 private 私有 私有只可以類內訪問。公有內外都可以訪問。類外定義 私有的不可以定義 成員函式需要加作用域訪問符 靜態變數需要類...

類的預設成員函式

class time time int hour,int minute,int second 有參的建構函式 time int hour 9,int minute 54,int second 23 全預設建構函式 time int hour,int minute 12,int second 30 半...