防衛式宣告:
在乙個標頭檔案中,往往很少有人(小白初學者)編寫標頭檔案時加入防衛式宣告,如complex.h
complex.h
#ifndef _complex_
#define _complex_~~
~~~~
~~~~
~~~~
~~~~
~~//標頭檔案主體~~
~~~~
~~~~
~~~~
~~~~
~~#endif
在預編譯階段,編譯器會把.**件展開。防衛式宣告的作用是:防止由於同乙個標頭檔案被包含多次,而導致了重複定義。
參考:防衛式宣告
函式若在class body內定義則是inline候選人,意思是不一定是inline函式,有些函式編譯器沒有能力讓它變為inline函式,
不在本體內定義 用inline關鍵字定義則為inline函式
建構函式初始化的兩種寫法:
第一種:
class
complex
}
第二種:
class
complex
}
我們要盡量使用第一種方式,這樣能夠提高效率,編譯器初始化的時候會「早一點」進行
注意:
不帶指標的類多半不用析構函式
函式過載常常發生在建構函式上
相同class的各個objects互為friend
傳值和返回值可以盡量使用引用提高效率,能不能加const看情況
那麼什麼情況返回值可以使用引用呢?
如果是臨時建立的值,則不能使用引用,如果我們進行引用了,因為該值是臨時的,用完之後會消失,此時我們引用就無效了,如果建立的值它在記憶體中是有區域存放的,則可以進行引用
例子:
inline complex&
_doapl
(complex* ths,
const complex& r)
上面的 *ths 不是臨時變數,因此可以返回引用,返回的值為 *ths,*ths可以被改動。但r不會被改動。
任何成員函式都有乙個隱藏的this point
傳遞者無需知道接收者是以什麼形式接收,可以以reference形式接收也可以以value形式接收
inline complex&
_doapl
(comples *ths,
const complex& r)
上面的**返回的是乙個*ths (value值)接收是以**引用(complex&)**的形式接收的。
當使用者連串使用賦值操作時,返回型別應避免使用void型別
inline complex&
complex::
operator+=
(const complex& r)
如果使用如下**
complex c1(2
,1)complex c2(5
);c2+=c1;
那麼return _doapl(this ,r);
的返回型別可以為void
如果使用**是:
complex c1(2
,1)complex c2(5
);c3+=c2+
=c1;
return _doapl(this ,r);
的返回型別應該為complex&
c2進行賦值操作完畢之後要返回引數給c3用,因此不可以是void
下面函式絕不可return by reference 因為它們返回的是乙個local object ,臨時在函式內建立乙個物件進行存放,離開了函式就死亡了,要體會 加 和 加到兩者之間的區別,乙個物件加到另一物件上可以以引用接收,兩個物件進行加操作沒有放置到某物件上,因此不可以用引用接收
inline complex
operator+(
const complex& x,
const complex &y
typename();建立乙個臨時物件,這裡complex(real(x)+real(y),imag(x)+imag(y));
complex()臨時建立乙個物件存放其中的值
類似的如int(7);
complex()
;//第一行
complex(4
,5);
//第二行
//第三行,上面兩行建立的臨時物件,到第三行就已經死亡了
cout是乙個物件 它的typename是ostream
cout<#include
ostream&
<<
(ostream& os,
const comples& x)
Android開發第二站UI布局(1)
線性布局分為兩種形式,水平線性布局和垂直線性布局 android orientation horizontal 使控制項水平排列 android orientation vertical 使控制項垂直排列 子類控制項相對子類控制項 值是另外乙個控制項的id android layout above ...
C1 駕駛證考試科目二考試心得
4.總結 科目二剛過,練車場上起早貪黑模擬訓練的場景雖依然歷歷在目,但我深知科目二以及陪伴我練車的小夥伴們接下來會是漸行漸遠漸無書,畢竟大家都是來自 360 行的人員,只是因為同樣乙個興趣愛好暫時湊到了一起。故此把 c1 駕考科二心得記錄一下,也算是自己生活軌跡的乙個筆記吧。如果還能給準備考試的朋友...
遊戲開發tips之RTTI(1)
首先說明標題的含義,怎麼感覺就和定義一種語言一樣,需要有乙個規約呢。標題定義如下 遊戲開發tip之 內容 總tips的第幾篇 擴充套件如下 內容 一,二,三.新手可憐,大神每一句話也許都藏著乾貨,但是新手總是不能立馬明白 立馬理解和明白的話,估計就上公升為和大神一樣的級別了吧 廢話少說,開始正文。大...