C 類和物件(2)

2021-09-11 19:26:12 字數 3186 閱讀 8891

如果乙個類中什麼成員都沒有,就稱該類為空類,但是空類中並不是什麼都沒有,任何乙個類在我們不寫的情況下,都會自動生成6個預設成員函式。

class student{};
建構函式雖然叫做構造,但是並不是構造物件,而是完成初始化工作。

class date

void print()

private:

int _year;

int _month;

int _day;

};int main()

其特徵如下:

class date

void print()

date(int year, int month, int day)//帶參構造

private:

int _year;

int _month;

int _day;

};int main()

class date

private:

int _year;

int _month;

int _day;

};int main()

class date

void print()

private:

int _year;

int _month;

int _day;

};int main()

class date

void print()

date(int year=2018, int month=11, int day=1)//全預設的

private:

int _year;

int _month;

int _day;

};int main()

編譯器生成的預設建構函式有什麼作用?

class time

private:

int _hour;

int _minute;

int _second;

};class date

private:

//1.內建型別/基本型別

int _year;

int _month;

int _day;

//2.自定義型別

time _t;

};int main()

這就說明,預設的建構函式針對自定義型別會做初始化。

析構函式並不是完成物件的銷毀,而是完成類的清理工作,類的銷毀要借助編譯器來完成。 特點:

class string

~string()

private:

char* _str;

};class person

;

拷貝構造是建構函式的一種過載。

特點:

class date

//d2(d1)

date(const date& d)//拷貝構造

void print()

private:

int _year;

int _month;

int _day;

};int main()

class string

~string()

private:

char* _str;

};

賦值運算子過載是針對自定義型別的操作符。

運算子的過載:

class date

bool operator==(const date& d)

bool operator<(const date& d)

~date()

date d1(2018, 12, 1);

date d2(2018, 12, 24);

cout<<(d1 == d2)《但是如果返回型別加上引用:

class date

date(const date& d)

date& operator=(const date& d)//賦值運算子過載

return *this;

} ~date()

private:

int _year;

int _month;

int _day;

};int main()

就會減少一次拷貝構造。

需要注意的幾點:

我們將const修飾的成員函式稱之為const成員函式,const修飾成員函式時,實際上修飾的是成員函式隱藏的this指標,用來保護該類的任何成員變數不被修改。

class date

bool operator<(const date& d)

void print()const//這裡的const修飾的是*this,即this指標指向的物件 const date* this

private:

int _year;

int _month;

int _day;

};int main()

const物件可以調非const成員函式嗎?

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

const成員函式內可以呼叫其他的非const成員函式嗎?

非const成員函式內可以呼叫其他的const成員函式嗎?

class date

const date* operator&()const

private:

int _year;

int _month;

int _day;

};int main()

class date

const date* operator&()const

private:

int _year;

int _month;

int _day;

};int main()

c 類和物件 2

1 設計類就是設計型別 1 我們給這個賦予什麼合法值。2 類中包含什麼樣的函式和操作符。3 新型別的物件該如何被建立和銷毀。4 物件的初始化和賦值。5 物件作為函式的引數如何以值傳遞。6 誰使用此型別的物件成員。private 私有成員,只允許本類中的函式訪問,而類外部的任何函式都不能訪問。如果緊跟...

C 類和物件2

這篇部落格來介紹一下類的預設成員函式,在類中有6個預設成員函式,就算乙個類什麼都沒有,也會自動生成這6個預設成員函式。那麼這6個預設成員函式是什麼呢?完成初始化和清理的兩個函式 建構函式和析構函式 完成拷貝複製的兩個函式 拷貝建構函式和賦值過載函式 取位址過載的兩個函式 普通物件和const物件取位...

C 初識 類和物件(2)

在之前的文章裡,我們出初步了解了,什麼是類,類如何定義,類的大小怎麼計算等 乙個空類裡面什麼也沒有,但是它並非是什麼也沒有,只要是類,它就有6個預設的成員函式 1.建構函式 2.析構函式 3.拷貝建構函式 4.賦值操作符過載 5.取位址操作符過載 6.const修飾的取位址操作符過載 類的建構函式 ...