天天看點

侯捷老師C++大系之C++面向對象開發:(一)不帶指針的類:Complex複數類的實作過程

一、筆記

1.C++程式設計簡介

侯捷老師C++大系之C++面向對象開發:(一)不帶指針的類:Complex複數類的實作過程
侯捷老師C++大系之C++面向對象開發:(一)不帶指針的類:Complex複數類的實作過程
侯捷老師C++大系之C++面向對象開發:(一)不帶指針的類:Complex複數類的實作過程

2.頭檔案與類的聲明

防衛式聲明

#ifndef __COMPLEX__

#define __COMPLEX__

……

#endif

頭檔案的布局

模闆簡介

template<typename T>

3.構造函數

inline函數:函數若在class body内定義完成,便自動成為inline候選人

通路級别:

public private

被外部通路的函數設為public

構造函數

complex (doble r=0,double i=0)

:re(r),im(i)

{ }

先初始化,後指派

這種寫法效率高

構造函數可以有很多個——重載

單例模式,構造函數放在private裡,不允許外部創

4.參數傳遞與傳回值

在函數後頭加const

double real () const{return re;}

參數傳遞: pass by value vs. pass by reference(to const)

參數盡量傳引用,如果不希望對方改加const

内化成習慣

傳回值傳遞:return by value vs. return by reference(to const)

傳回值也盡量傳引用

friend(友元)

自由取得friend的private成員

相同class的各個objects互為friends(友元)

class body外的各種定義

什麼情況可以傳和傳回引用,什麼情況不可以:

兩個參數相加,得到一個新的結果時不能傳引用

5.操作符重載與臨時對象

操作符重載之一,成員函數

操作符重載之二,非成員函數

臨時對象

重載<<

二、代碼

1.complex.h

2.complex_test.cpp