C++快速入門筆記(三)

4運算符重載

4.1對一個運算符重載本質上就是編寫函數,只不過這個函數的名稱必須以operator關鍵字開始,然後跟隨被重載運算符。也就是說,我們需要編寫的函數原型(運算符重載函數)必須符合如下的規則:

函數返回值類型 operator 被重載的運算符(函數參數列表)

另外要注意以下幾點:

(1)只能重載C++中原先已有定義的運算符。比如,C++中的 ”**“ 這個運算符就不能重載

(2)”.“  ".*"  "::"  "?:"  和 sizeof 這5個運算符不允許被重載。除這5個運算符除外,其他已有定義的C++運算符都可以被重載。

(3)不能改變運算符的操作數個數,比如,對於彈幕運算符,它只能有一個操作數。

(4)不能改變運算符原有的優先級。

(5)不能改變運算符原有的結合性。

(6)不能改變運算符對C++內部那些預定義數據類型的操作方式。

4.2類型轉換函數

用構造函數實現類型轉換

爲了用構造函數來實現類型轉換,類內至少必須定義一個只帶一個參數的構造函數,該構造函數將參數類型轉換爲該類的類型。當需要轉換時,系統會自動調用該構造函數,創建該類的一個臨時對象,該對象由被轉化的初始化,從而實現轉換。

類型轉換函數

源類::operator  目標類()

{

...

return  類型爲目標類型的變量或者常量

}

例如,要實現將一個複數類轉爲double類型,且這個double類型的數據等於複數的模,那麼可以向前面的複數類中添加如下的轉化函數。

CComplex::operator();

在CComplex.cpp文件中添加如下的實現代碼:

CComplex::operator double(){

double x = sqrt(m_Re*m_Re+m_Im*m_Im);

    return x;

}

有了上面的轉換函數後,可以將一個複數轉換爲一個double類型的數據。下面時示例代碼:

main(){

CComplex c(1.0,2.0);

double x=c;

cout<<x<<endl;

}

5繼承

在繼承的概念中,用戶利用已有的數據類型定義出新的數據類型,在新的數據類型中,不但擁有新的數據成員和成員函數,而且同時擁有記得數據類型中的數據成員和成員函數。在面向對象程序設計中,我們稱被繼承的類爲基本類,而經由繼承關係而定義出來的類爲派生類。基本類也稱父類,而派生類也成爲子類。

5.1派生類的定義

通過繼承基本類設計派生類的語法格式如下:

class  派生類名稱 :訪問權修飾符(public protected 或private)基本類名稱

{

...

};

5.2派生類設計

包括派生類成員的定義與使用

派生類構造函數的設計

派生類析構函數的設計

5.3程序的擴展

分爲單一繼承與多重繼承

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章