所有類建立物件時會自動生成六個預設函式。
但有時候預設函式不能滿足需求,可以自己建立對應函式,來代替預設函式。
初始化和清理:建構函式
析構函式
拷貝複製: 賦值過載函式
拷貝建構函式
const物件取位址過載
class date
date()
{} private:
int _year;
int _mouth;
int _day;
};int main()
完成對類一些資源的清理工作。並不是銷毀,銷毀任務由編譯器完成。
typedef int datatype;
class seqlist
~seqlist()
private:
int * _pdata;
size_t _size;
size_t _capacity;
};
思考:無窮遞迴的原因:傳參會生成臨時變數,生成方式為拷貝構造,進而產生無窮遞迴。
class date
private:
int _year;
int _mouth;
int _day;
};
淺拷貝:將物件按記憶體儲存按位元組完成拷貝
解決方法:
之後更新。
c++為了增強**可讀性,引入了運算子過載。
data d1+d2; //若+沒有過載則無法通過編譯
運算子過載:具有特殊函式名的函式,有引數,有返回值型別。
函式原型:返回值型別 operator運算子 (引數型別);
過載時需注意:
date& operator=(const date& d)
date operator+(int days)
else
else
}temp._day = sum;
return temp;
}}
1.const修飾的成員函式
表示其隱性引數this指標所指物件無法修改。
void display( ) const
2.const修飾的物件
const date d1;
3.取位址與const取位址操作符過載
這兩個過載一般不需要顯式給出,編譯器預設生成就夠用了。
class date
const date* operator&()const
private:
int _year;
int _mouth;
int _day;
};
類和物件(預設成員函式)
建構函式不是開空間建立物件,而是初始化物件,更嚴謹的說是賦初值 特性初始化列表 class date private int year int month int day explicit 析構函式不是完成對物件的銷毀,區域性物件銷毀由編譯器完成,而在物件銷毀時會呼叫析構函式,完成類的一些資源清理工...
C 類預設成員函式與過載
c 中有六大預設成員函式 構建物件 初始化型別轉換 單參才能轉換 沒有返回值,並且不能指定返回值型別 函式名與類名相同 建立物件是由編譯器自動呼叫 在物件生命週期內只會呼叫一次 可以過載 如果沒有顯示定義,編譯器會預設合成乙個預設的建構函式 在有必要的情況下 如類成員變數中有類物件,且該類物件有自己...
C 類和物件及其預設成員函式
類和物件的一些基礎 類是對乙個事物的描述,可以看做成乙個型別 int.char等 他並沒有分配空間。物件是類定義出來的乙個實物。類的成員訪問限定符 public 公有 private 私有 私有只可以類內訪問。公有內外都可以訪問。類外定義 私有的不可以定義 成員函式需要加作用域訪問符 靜態變數需要類...