complex.h
1、防衛式宣告
#ifndef complex//告訴編譯器曾經沒有
#define complex
。。。。
#endif
作用:發展乙個複數,把它放在標頭檔案中,因為很多程式要用到這個標頭檔案,include"complex",當第一次include這個標頭檔案後,編譯器就會進入標頭檔案中,並且定義_complex_,這個就定義好了,在第二次include時,就不需要再進入標頭檔案定義了,因為編譯器已經有_complex_了,避免了重複的include含入 的動作。
header(標頭檔案)布局
#ifnedf _complex_
#define _complex_
//-----------------第一部分:前置宣告-----------------
#include
class
ostream
;class
complex
;complex&
_doapl
(complex* ths,
const complex& r)
;//----------------第二部分:類宣告----------------------
class
complex
;//----------------第三部分:類定義-----------------------
complex::function...
.#endif
2、inline函式
在類內直接宣告定義的函式不用加inline就是內聯函式了,只是如果函式在類內只是宣告,在外面定義,為了把他寫成內聯函式,需要加inline關鍵字。
3、訪問級別(access level)
public、private、protected
private:資料的部分,需要封裝,把資料很好的包裹起來。預設
public:大部分函式,需要被使用
protected:
4、建構函式(constructor)
當你需要建立乙個物件,有乙個函式會自動被呼叫起來
特點:(1)建構函式名稱必須與類的名稱一致
(2)沒有返回型別,因為建構函式就是為了建立物件,不能改變,所以不必謝,也就沒有返回值。
注意:complex (double r=0;double i = 0):re®,im(i)//這一行只有建構函式有,叫做初值列,初始列,把r設給re,i設給im,其實放到本體上也行,為什麼呢?簡單講就是乙個變數數值的設定兩階段,初始化和賦值,以上是初始化,這樣做就是為了直接初始化,如果放在本體中,其實是有點初始化晚了。就是效率上會好一些。
(3)不可能在類中去呼叫建構函式。對應的也有乙個析構函式,class有帶指標的和不帶指標的,不帶指標的就不需要析構函式
(4)建構函式可以有很多個overlording(過載),但是過載的函式不能在函式名後面加const,這樣就衝突了,為什麼能過載?在類中函式名過載,但是在編譯器看來,經過編譯之後的結果其實是不同的函式的。注意:在編寫函式過載時,需要注意函式在呼叫的時候不能有衝突,使得編譯器無法判斷。
(5)什麼情況可以啊建構函式放在private區中?
有一些設計模式可以放在裡面,但目前為止不要放。
5、const member function(常量成員函式)
double real() const{};//const放在函式後面。
a:有什麼用呢?
q:當要列印一些東西的時候,裡面的東西是不改變的,所以可以加const作為常量成員函式。
6、引數傳遞:pass by value & pass by reference(to const)
const reference(例如:const complex&):表示傳入的引用是不能改的。引數傳遞盡量傳引用,因為速度更快。
7、friend(友元)
在語言中:朋友可以來拿,指的是資料。
例如:在private中的資料不能通過外部來取,
friend complex& __doapl(complex*,const complex&);//宣告
//定義
inline complex&
__doapl(complex* ths,const complex& r)
自由取得friend的private成員,這樣就可以直接取得私有資料,而不用通過呼叫函式取得。但是friend也在一定程度上打破了c++的封裝,所以可以進行選擇,選用朋友這種方式或者通過呼叫函式。
8、相同class 的各個object互為friend(友元)
也就是例如乙個student的類,其中的成員資料報括姓名,學號等。
建立了三個物件,s1,s2,s3。s3中的成員函式可以直接呼叫s2中的私有的成員資料。為什麼呢?
答案也就是這乙個小標題的說法。
9、class body外的各種定義
什麼情況用pass by reference
什麼情況用return by reference
注意:返回引用的時候,函式中的返回的引用在程式完成後仍然存在才行,不然得到的是壞東西。
c 前置宣告與標頭檔案引用
優點 1.c 前置宣告,可以節約預處理器的展開時間,也就是在編譯的時候速度是增快了,但是伴隨著很多坑。2.當被前置宣告的類改動後,只需要編譯包含改動類標頭檔案的原始檔,所有使用了前置宣告的原始檔不需要改動 體現1.所有引用testb.h 的其他 cpp檔案不用再去包含 tem a 與 util 這倆...
C 模板類與標頭檔案
今天將模板類函式分成了宣告和定義兩個檔案 模板類的宣告 pragma once ifndef find item define find tiem template const elemtype find item const elemtype first,const elemtype last,c...
C 標頭檔案與C標頭檔案
include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...