類有六個預設成員函式~
**今天我們來看一下前三個~**
一、建構函式
什麼是建構函式呢??
看下圖:
如圖:建構函式的特性有:
1.函式名與類名相同;
2.沒有返回值;
3.有初始化列表(可以不用)
4.新物件被建立,由編譯器自動呼叫,且在物件的生命週期內僅呼叫一次
5.建構函式可以過載,實參決定了呼叫哪個建構函式
6.如果沒有顯示定義時,編譯器提供乙個預設的建構函式
7.無參建構函式和帶有預設值的建構函式都認為是預設建構函式,並且預設建構函式只有乙個
8.建構函式不能用const來修飾
二、拷貝建構函式
定義:只有單個形參,並且該形參是對本類型別物件的引用(常用const修飾)
public:
cdate()
{}cdate( int year,int month,int day)
:_iyear(year)
, _imonth(month)
, _iday(day)
cdate(const cdate& date)//拷貝建構函式
private:
int _iyear;
int _imonth;
int _iday;
int a;
};
結合**,可以看出拷貝建構函式的特徵有:
1.拷貝建構函式是建構函式的過載;
2.拷貝建構函式的引數必須使用同類型別物件的引用傳遞
3.如果沒有顯示定義,系統會自動合成乙個預設的拷貝建構函式,預設的拷貝建構函式會一次拷貝類的資料成員完成初始化;
void funtest(const cdate date)
//傳值方式作為函式的引數
{}cdate funtest1()
cdate d1(1990, 12,2);
cdate d2(d1);//物件例項化物件
三、析構函式
功能:在物件被銷毀時,由編譯器自動呼叫,完成類的一些資源清理和汕尾工作
析構函式的特性:1.析構函式在類名(即建構函式名)加上~
2.析構函式沒有返回值沒有引數
3.乙個類有且只有乙個析構函式
若未顯示定義,系統會預設生成預設的析構函式
類的六個預設成員函式
類的六個預設成員函式 1.建構函式 2.拷貝建構函式 3.析構函式 4.賦值操作符過載 5.取位址操作符過載 6.const修飾的取位址操作符過載 建構函式 是乙個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內隻且只呼叫一次,以保證每個資料成員都有乙個合適的初...
類的六個預設成員函式
如果乙個類中什麼成員都沒有,則就是空類。但是空類中什麼都沒有嗎?其實並不是這樣的,任何類在我們不寫的情況下,都會自動生成下面六個預設成員函式。class date 無參的建構函式 date int year,int month,int day 有參的建構函式 這兩個建構函式構成了函式的過載,因為它們...
C 之類的六個預設成員函式
在c 類中同樣的預設成員函式一共有六個,即使使用者不定義,編譯器也可以給出。分別為 1 建構函式 2 析構函式 3 拷貝建構函式 4 賦值運算 5 取位址運算 6 const取位址運算 我們一下述程式為例驗證下上面說法 include using namespace std class comple...