一蒿辙、導(dǎo)論
classes的兩種經(jīng)典分類是
class without pointer members (complex)
class with pointer members (string)
第一周是第一種,不帶指針的類猾蒂,以complex 的講解為主。
二喧锦、頭文件
在同文件中盡量采用防衛(wèi)式聲明
#ifndef __NAME__
#define __NAME__
.......
#endif
頭文件的布局
三辈挂、構(gòu)造函數(shù)
class complex
{
public:
complex (double r = 0, double i = 0)
: re (r), im (i) { }//初始化列表
private:
double re;
double im;
};
在構(gòu)造函數(shù)的初始化列表中,初始化順序是以數(shù)據(jù)成員定義順序?yàn)闃?biāo)準(zhǔn)按声,在這個(gè)構(gòu)造函數(shù)先初始化re
膳犹,再初始化im
,就算在初始化列表中改變他們的順序也不會(huì)改變初始化的順序签则,所以要按照數(shù)據(jù)成員順序?qū)懭氤跏蓟斜硇氪玻乐巩a(chǎn)生未定義行為。
complex (double r = 0, double i = 0)
: im (i),re (r) { }//依舊是先初始化re,再初始化im
四渐裂、函數(shù)簽名
C++允許函數(shù)重載豺旬,函數(shù)重載必須保證函數(shù)簽名不同,函數(shù)簽名包括 函數(shù)名柒凉,參數(shù)列表族阅,還有 const 關(guān)鍵字。
double real() {}
double real(double r) {}//函數(shù)重載
五扛拨、小結(jié)
第一周的教程主要帶我們進(jìn)入面向?qū)ο笤O(shè)計(jì)的一些基礎(chǔ)耘分,比較容易理解,但是要做到像侯捷老師所說要寫得大氣绑警。
侯捷老師反復(fù)強(qiáng)調(diào)的三個(gè)建議:
- 防衛(wèi)式聲明
- 不修改數(shù)據(jù)成員的成員函數(shù)要寫上const
- 使用 pass by reference