1.左值和右值
左值為物件的身份(記憶體的位置),所有具名變數均為左值,即可定址。
右值為物件的值(內容)
原始字面值,如0,「abc」等
表示式返回值
lambda表示式
非引用返回值
2.decltype
左值為引用,右值為型別
3.結果未定義
cout<< i<<
" "<<
++i<< endl;
4.bool 問題
bool b =
true
;bool b2=
-b;//仍為true,因為-b不為0
5.模運算
m%
(-n)
= m%n
(-m)%n =
-(m%n)
6.解引用運算優先順序
*p++
;//等價於 *(p++)
*iter.
empty()
;//等價於 *(iter.empty()) //編譯錯誤
7.轉換
8.頂層const無法使函式過載
void
fcn(
const
int i)
;void
fcn(
int i)
;//屬於重複定義
void
fcn(
const
int&r)
;void
fcn(
int&r)
;//底層const可以作為過載
9.不要返回區域性物件的指標或引用
10.一旦某個形參被賦予了預設實參,則它後面的所有形參都必須有預設實參
11.constexpr和內聯函式放在標頭檔案中(即可多次定義)
編譯器想要展開函式僅有函式宣告是不夠的,還需要函式的定義
12.assert(expr)預處理巨集
當expr為假時輸出資訊並終止程式的執行,可以assert(expr&&「出錯資訊」)輸出錯誤資訊便於除錯
若定義了ndebug則assert什麼也不做
13.候選函式與可行函式
voidf(
) ①
voidf(
int) ②
voidf(
int,
int) ③
voidf(
double
,double
=3.14
) ④
當呼叫f(5.6)時,候選函式為(①②③④),可行函式為(②④),最佳匹配為④
14.函式指標與函式返回值
bool
(*pf)(.
..)//函式指標
bool*pf
(...
)//函式返回值為指向bool的指標
15.跳轉語句goto
goto label;
label:
return
;//帶標籤語句,可以作為goto的目標
16.try語句塊和異常處理
try
catch
(const myexception& e)
17.區域性物件
18.宣告乙個返回陣列指標的函式
int(*
func
(int i))[
10];auto
func
(int i)
->
int(*)
[10];
//尾置返回型別
19.含有可變形參的函式
void
err_msg
(initializer_list il)
err_msg
()
20.main處理命令列選項
int
main
(int argc,
char
*argv)
;//argv是個陣列,元素是指向c風格字串的指標
intmain
(int argc,
char
**argv)
;
21.函式作用域
如果我們在內層作用域中宣告名字,它將隱藏外層作用域中宣告的同名實體,在不同的作用域中無法過載函式名。
函式與lambda表示式
lambda表示式是python中一類特殊的定義函式的形式,使用它可以定義乙個匿名函式。與其它語言不同,python的lambda表示式的函式體只能有單獨的一條語句,也就是返回值表示式語句。其語法如下 lambda 形參列表 函式返回值表示式語句 常規函式 def comp x return x a...
函式與Lambda表示式
def myfirstfunction name 函式定義過程中name是形參 因為ta只是乙個形式,表示佔據乙個引數位置 print 傳遞進來的叫做實參,因為ta是具體的引數值!format name myfirstfunction 老馬的程式人生 傳遞進來的老馬的程式人生叫做實參,因為ta是具體...
函式與Lambda表示式
學習人員 賈其豪 函式定義預設值引數 函式定義時,給形參設定預設值,只有與預設值不符的時候才需要傳遞實參 deffun a,b 10 b稱為預設值引數 print a,b 函式的呼叫 fun 100 fun 20,30 個數可變的位置引數 定義函式時,可能無法事先確定傳遞的位置實參的個數時,使用可變...