翻譯至:
小括號的寫法
以下寫法等價:
ptr[3]
*(ptr + 3)
*(3 + ptr)
3[ptr]
most vexing parse
這個問題,可以通過加小括號規避
運算子 字母和符號
the tokens and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq, <%, %>, <:, and :> can be used instead of the symbols &&, &=, &, |, ~, !, !=, ||, |=, ^, ^=, , [, and ]
考慮有些鍵盤上缺少某些符號
過載關鍵字,一些情況下可能有用
placement new
定位new,優勢:
1)在已分配好的記憶體上進行物件的構建,構建速度快。
2)已分配好的記憶體可以反覆利用,有效的避免記憶體碎片問題。
#include using namespace std;
struct test
~test()
};int main()
成員函式的引用修飾符
#include struct foo
void foo() &&
};int main()
指向成員的指標操作符
例項的靜態方法
struct foo
};// these are equivalent
foo::foo();
foo().foo();
過載++和--
struct number ;
規則:新增乙個int,表示後置
後置方式會生成乙個臨時物件,效率低
對基礎型別來說,前置和後置效率一樣
操作符過載和檢查順序
過載,(逗號),||或者&&操作符會引起混亂,因為它打破了正常的檢查規則。
盡量不要過載這幾個操作符
函式作為模板引數
編譯器在例項化模板**時內聯呼叫特定的函式以獲得更高效的執行
模板作為模板引數
typename
static鮮為人知的細微特性
1,它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c.下面是a.c的內容 char a a global variable void ms...
C 鮮為人知的符號
目錄 1 1.引言 1 2.少為人知的符號表1 1 2.1.符號表 1 2.2.示例 2 3.少為人知的符號表2 2 3.1.符號表 2 3.2.示例 3 這些鮮為人知的c 符號,可直接在 中使用,但實踐中不推薦這麼做,可作為茶餘飯後的樂趣了解c 的另一面。雖然它們鮮為人知,但卻不是gnu g 獨有...
鮮為人知的 Python 語法
所有人 好吧,不是所有人 都知道 python 是一門用途廣泛 易讀 而且容易入門的程式語言。但同時 python 語法也允許我們做一些很奇怪的事情。眾所周知 python 的 lambda 表示式不支援多行 但是可以模擬出多行 的效果。def f x string if x.endswith g ...