// 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 一種簡單的原子布林型別,只支...