C 11常用的14個功能

2021-07-24 18:48:01 字數 2121 閱讀 9793

// threadstudy.cpp : 定義控制台應用程式的入口點。

//// c11 特性總結

#include "stdafx.h"

#include

#include

#include

#include

#include

#include

//#include

#include

#include

#include

#include

#include

void 性質1()

for (auto ite = vi.begin(); ite != vi.end(); ++ite)

}void 性質2()

void 性質3()

}int arr = ;

for (auto& e : arr)

}void 性質4()

};class b : public a

};//  輸出的竟然是a

a  *p = new b();

p->f(1);}};

class b : public a

};a  *p = new b();

p->f(1);

}// 上面的兩個竟然輸出了a

// 不應當過載這個虛函式

virtual void g(int) final

};class b : public a

// 如果過載將會報錯

//virtual void g(int) // error c3248: 「main::a::g」:  宣告為「final」的函式無法被「main::b::g」重寫

// 確實沒有過載

virtual void g(float) // 過載};}

}void 性質5()

;enum class n2 ;

// 傳統的方法出現重定義

/*enum  a1

;enum  a2

;*/}

void 性質6()

assert(wp.use_count() == 1);

}void 性質7()

);auto is_odd = (int n) ;

auto pos = std::find_if(std::begin(v), std::end(v), is_odd);

if (pos != std::end(v))

}void 性質8()

;std::for_each(std::begin(arr), std::end(arr), (int n) );

auto is_odd = (int n) ;

auto pos = std::find_if(std::begin(arr), std::end(arr), is_odd);

if (pos != std::end(arr))

std::cout << *pos << std::endl;

}template

class vector

;template

t1 add(t1 t1, t2 t2)

void 性質9()

void 性質10()

~a()

// 這個函式代價高,需要複製物件

a(const a& other)

// 這個函式代價低,僅僅是交換物件

a(a&& other)

};std::listva;

a a;

// 左值自動呼叫a(const a& other)

va.push_back(a);

// 通過語意轉移呼叫a(a&& other),a這個物件以後也就廢掉了不能正常使用了,後面的風險有程式設計師負責

va.push_back(std::move(a));

//編譯器知道是右值,因此自動呼叫a(a&& other),臨時物件也就自動消失了,沒有上面一行**的風險

//交換回來的臨時物件也需要析構

va.push_back(a());

}void f()

void 性質11()

void 性質12()

}else

}void 性質13()

void 性質14()

C 11新增的類功能

如果您提供了析構函式,複製建構函式或複製賦值運算子 那麼移動建構函式和移動賦值運算子將不會被自動提供 如果您提供了移動建構函式或移動賦值運算子 那麼複製建構函式和複製構造運算子將不會被自動提供 testclass explicit testclass const string newmessage ...

C 11增加的功能特性

現代c 這個術語在c 11發布後變得非常流行。這是什麼意思?首先,現代c 是一組模式和習語,旨在消除的缺點美好的 c類 如此多的c 程式設計師使用,特別是如果他們開始在c,c 程式設計11看起來更簡潔易懂的方式,這是非常重要的。c 11增加的功能特性包括 自動型別推斷 lambdas表示式 c 11...

c 11常用特性

目錄 一 atomic 1 std atomic flag 2 std atomic 二 std thread 三 std condition variable 四 右值引用 五 std function std bind 六 lambda表示式 atomic flag 一種簡單的原子布林型別,只支...