1. 建構函式
如果類的成員變數為私有的,要對這些成員初始化必須呼叫乙個共有的成員函式來進行.
這個共有的成員函式在定義物件的同時會自動執行一次,被呼叫的函式稱為建構函式.
建構函式的特點:
1.函式名與類名相同.
2. 無返回值.
3.建構函式可以過載.
4.例項化物件時,系統呼叫相應的建構函式.
5.建構函式可以在類中定義,也可以在內外定義.
6.沒有自定義建構函式,系統會給出缺省的建構函式(預設的建構函式).
7無參的建構函式和全預設建構函式統認為是預設建構函式,預設函式只能出現乙個.
2.拷貝(複製)建構函式
用乙個已存在的物件初始化乙個正在建立的物件,呼叫的建構函式就是拷貝建構函式。
date(const date &d)
:_year(d._year)
,_month(d._month)
,_day(d._day)
拷貝建構函式的特點:
1.拷貝建構函式是建構函式的過載.
2.拷貝建構函式的引數必須是引用,不能是值傳遞,負責會引發無窮遞迴.
原因:實參給形參傳值會經過乙個中間物件,而給中間物件傳值又要經過乙個中間物件......以此類推就會引發無窮遞迴.
3.如果沒有自定義拷貝建構函式,系統會給出缺省的預設拷貝建構函式.
3.析構函式
當乙個物件的生命週期結束時,系統會自動呼叫乙個成員函式,這個成員函式就是析構函式.
1.析構函式在類名前加上~。
2.析構函式無返回值.
3.析構函式沒有引數.
4.析構函式不能過載.
5.建構函式被呼叫幾次,析構函式就呼叫幾次.
6.析構函式體內並不是刪除了當前作用的物件,而是做了一些清理工作.
7.沒有自定義析構函式,系統會給出缺省的析構函式.
運算子過載特點:
1.operator+ 合法的運算子構成函式名.
2.過載運算子以後,不能改變運算子的優先順序、結合性、運算元個數.
3. 運算子函式的引數至少有乙個必須是類的物件或者類的物件的引用。這種規定可以防止改變內建
型別的函義。
以下5個不能過載的運算子:
. (成員訪問運算子) .*(指標訪問運算子) :: (與運算子) sizeof (大小運算子) ?: (條件運算子)
4. 賦值運算子過載
對乙個已經存在的物件進行拷貝賦值(與拷貝建構函式不同).
date& operator=(const date &d)
return *this;}
5.取位址運算子過載
date* operator &()
6.const修飾的取位址運算子過載
const date * operator& () const
C 類中的六大預設成員函式詳解
在c 中,當你去建立乙個類的時候,即便這個類是空類,也會自動生成下面6個預設成員函式,在本篇部落格中,我將逐一分析下面6個預設成員函式。建構函式並不是去建構函式的函式,而是去對函式進行初始化的函式。建構函式的函式名與類名相同,當我們每次建立類物件的時候,就會自動呼叫建構函式。建構函式在物件的生命週期...
類的預設成員函式
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 半...
類的六個預設成員函式
類的六個預設成員函式 1.建構函式 2.拷貝建構函式 3.析構函式 4.賦值操作符過載 5.取位址操作符過載 6.const修飾的取位址操作符過載 建構函式 是乙個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內隻且只呼叫一次,以保證每個資料成員都有乙個合適的初...