C 11 比較詭異的一些語法

2021-06-25 16:08:39 字數 1340 閱讀 3816

void f(int&& i)

auto main() -> int

這裡->後面可以使用decltype(e)表示式

range-for:for(auto& v : l)

=default =delete(之前是不寫或private:限定)

override final

using base::base;(引入基類的建構函式,實際上也就引入了子類對應的預設建構函式)

constexpr

decltype(e)

初始化列表(避免了型別narrowing)

x x; ==>auto x = x;

r"***("quoted string containing the usual terminator (")")***" 引用

r代表""內\不需要轉義為\\,而r"(....)"是擴充套件的寫法,自定義終結符序列

表示擁有關係,不可拷貝賦值

unique_ptrp(new x); // or

return p.release(); //如果沒有這裡的release則行為等同於auto_ptr

unique_ptr可以指定額外的deleter&引數

乙個 weak_ptr 指向的是乙個被 shared_ptr 所指向的物件。該 weak_ptr 可以用來決定該物件是否已被銷毀。

shared_ptr 相當於webkit裡使用的 refptr

weak_ptr 不能被直接解引用,但可以:

通過shared_ptr構造

通過lock()返回

templateusing vec = std::vector>;

這個特性很有用,但不知道編譯期能不能在報錯時使用別名?

一般型別的別名:

typedef void (*f)(double); --> using f = void (*)(double);

(){} <-- 神奇的3個連寫括號!

注意以值捕獲和以引用捕獲的差別

p->template mem_func(args);

webkit**中的例子:wtf\hashset.h

templatetemplatetypename hashset::iterator

inline hashset::find(const t& value) const

暫略

linear_congruential

subtract_with_carry

mersenne_twister

暫略

C 11的一些功能

1.斷言是將乙個須要為真的表示式放在語句中,在debug 模式下檢查一些邏輯錯誤的引數。c 中使用assert 須要使用 或者標頭檔案。有函式定義例如以下 void fun int a,int n 這樣就能夠檢查n 0 的情況。假設遇到這樣的情況,程式會呼叫abort 函式而終止。c 11 提供了s...

一些常用的C 11新增特性

c 11新標基於c 程式設計社群的大量實踐經驗,並吸收了很多boost庫的特性,還對原有c 做了一些改進工作,是學習現代c 程式設計c 11支援對於所有的內建型別和使用者定義型別使用大括號方式的初始化列表,使用初始化列表時,可以新增等號,也可以沒有。int x 以前只有陣列可以這樣初始化 doubl...

C 11中的一些新特性

c 11擴大了初始化列表的使用範圍,所有的內建型別和使用者自定義型別都可以使用列表初始化,號可新增可不新增。如 int main int arr2 int arr3 newint 5 vector int v1 vector int v2 return0 容器支援花括號列表初始化,本質上是增加了乙個...