為什么 學(xué)習(xí) C++?
他的效率 比其他 面向?qū)ο?語言,
更快。
作用域,Scope 大括號
以 良好的方式, 編寫 C++ class
- Class without pointer members
Complex , 沒指針
不帶指針的類, 多半不用寫 析構(gòu)函數(shù)。
復(fù)數(shù), 包含 實(shí)部 和虛部。 - Class with pointer members
String, 有指針
字符串, 其實(shí) 是個 ptr, 指向一串字符。
學(xué)習(xí) C++,
- 語言部分
- 標(biāo)準(zhǔn)庫 部分
C++ 98
(1.0 ) 1998
C++ 11
( 2.0 ) 2011
STL, Standard Template Library.
C語言,
數(shù)據(jù)定義在 結(jié)構(gòu)體中。類型。
數(shù)據(jù)變量, 都是 全局的。
各個函數(shù) , 都可以 去處理數(shù)據(jù)。
C ++,
Class / Struct,
Data Members,
Member Functions.
把 數(shù)據(jù) 和 函數(shù) 包在一起。
Guard 防衛(wèi)式聲明
# ifndef
# define
# endif
{
條件 編譯.
防止 在 一個 .cpp 里面,
include 同一個 .h 文件 多次。
而出現(xiàn), 那個 .h 的聲明 , 被重復(fù)出現(xiàn)。
}
Class Template 模版
template < typename T > 函數(shù)模板
構(gòu)造函數(shù) ctor 放在 private 區(qū)。
public 區(qū), 放一個 單例。
不會改變的內(nèi)容前面,
( get 方法 ),
實(shí)現(xiàn)前面,加 const.
參數(shù)傳遞
- pass by value 盡量不要傳值。
整包 傳過去。
Value 多大, 都傳。
傳的動作, 就是 壓到 函數(shù)的 棧( Stack )里面。 - pass by reference ( to const )
有 取地址 符號。( & )
引用 在底部 就是一個指針。
傳引用, 就相當(dāng)于傳指針。
傳引用, 速度很快, 傳遞指針的 速度, 4個字節(jié)。
最好, 所有的 參數(shù)傳遞, 都傳引用。
參數(shù)少于 4字節(jié), 傳value.
我們是 同一個東西,
函數(shù)一改, 就影響了 我。
解決:
pass by reference to const
C 可以傳 指針。
我要傳 這一包東西,
這包東西太大了,
我就把 這一包東西的 地址 , 傳出去。
返回值 傳遞
- return by value
沒有 by reference 好。
他比較差, 比較慢。 - return by reference ( to const )
盡量 這樣做
用 reference 的 好處,
傳遞者 無需知道 , 接受者 是以 reference 形式接收。
用 point 來 pass value,
傳的人 必須知道 現(xiàn)在傳的是 什么東西, 要有一個 特殊符號。
操作符 重載, Operator Overloading
this, 調(diào)用者
所有的 成員函數(shù), 一定帶著一個 隱藏的 參數(shù)。
那個參數(shù), 我沒有寫, 但是他在。
誰調(diào)用這個函數(shù), 那個誰, 就是 this.
this , 是一個 指針。
編譯器 ,把 operator 符號 ,
作用在 左邊。
*ths, 是 指針?biāo)傅臇|西,
一個 object/ value.
看 function name ,
就知道
這是 成員函數(shù), 還是 全局函數(shù)。
typename ( 臨時對象)
等同于 int (sth )
臨時對象, 他臨時才要的。
他的生命 到下一行 ,就結(jié)束了。
negate 取反, 反向
+
正號, 還是 加法 ?
編譯器 通過 參數(shù), 識別。