C++ programs 代碼基本形式
- .h (header files) -- classes declaration
- .cpp --ex.cpp
- .h (header files) -- standard library
開始寫代碼
1.Header 中的防衛(wèi)式聲明 --
#ifndef __NAME__
#define __NAME__
0.
1.
2.
#endif
2.上圖代碼框中的1 --- class 的聲明(declaration) --- 需要注意的點(diǎn)
- 類的聲明分為兩部分
class complex // class head
{
.... // class body
}
請將數(shù)據(jù)放在 private 中
constructor (ctor,構(gòu)造函數(shù)) 的一種大氣的寫法 及 構(gòu)造函數(shù)的特點(diǎn)
public:
complex (double r=0, double i=0)
: re(r), im(i) //initiaization list
{} //注意賦值與初始化的不同
- 函數(shù)名稱 = 類名稱
- 擁有參數(shù)
- 參數(shù)可以有默認(rèn)值
- 沒有返回類型
- constructor 的 overloading (重載)
- 重載常發(fā)生在構(gòu)造函數(shù)身上
- 其實(shí)重載經(jīng)過編譯后實(shí)際名稱是不同的
- const 的使用 -- 盡可能使用 const
- 當(dāng)不會改變數(shù)據(jù)內(nèi)容時(shí),我們可以加 const
- 參數(shù)的傳遞 與 返回值的傳遞 :by value or by reference (to const)
- 如果可以的話,最好傳引用
- by reference 傳遞速度快,但改變時(shí)會跟著改變,所以當(dāng)不需要對方改時(shí), 可以用 to const
- 在 return by reference 時(shí),需要注意的一點(diǎn)是 -- 傳遞者無需知道接受者是以 reference 形式接受的
- 什么情況下可以 by reference ?
- local 變量,local 對象 這種在函數(shù)已結(jié)束,生命就消失的不能返回reference ,也就是說,返回局部對象的reference是錯誤的
- friends (友元)
- 相同 class 的各個 objects 互為 friends
3.上圖代碼框中的2 --- class body 之外的各種定義(definition) --- 操作符的重載(operator overloading)
- 成員函數(shù)的重載
- this 綁定到左側(cè)運(yùn)算對象,成員運(yùn)算符函數(shù)的(顯示)參數(shù)數(shù)量比運(yùn)算對象的數(shù)量少一個
- 當(dāng)我們定義重載的運(yùn)算符時(shí),必須首先決定選擇為成員或者非成員,但是輸入輸出運(yùn)算符必須時(shí)非成員函數(shù),因?yàn)樗淖髠?cè)對象必須是 istream 或 ostream
- 非成員函數(shù)的重載
- 沒有 this
- 無論是成員函數(shù)還是非成員函數(shù)的重載,都需要考慮是否需要加 const 以及 是否需要 by reference