鮮為人知的C 特性

2022-09-20 12:36:08 字數 1163 閱讀 5697

翻譯至:

小括號的寫法

以下寫法等價:

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 ...