走進C 11(十七)

2021-10-10 18:01:04 字數 849 閱讀 8812

是的你沒看錯,今天的題目就是 >。

這。。。。。。有啥好講的?

其實經常用模板的人可能一不小心都吃過這個虧。

對於c++程式設計師來說,>>是位右移操作符,但在一此應用中會涉及到需要連寫的情景,例如:模板和表示式轉換。

在例項化模板時會出現連續兩個右尖括號,同樣static_cast、dynamic_cast、reinterpret_cast、const_cast表示式轉換時也會遇到相同的情況。c++98標準是讓程式設計師在》之間填上乙個空格,而c++11則廢除了這一規定,支援連寫。

舉個例子:

template class a{};template class b{};b> b1;  // c++98與c++11均支援b>  b2;  // c++98不支援,c++11支援//c++98標準將連寫的》當成了位右移操作符來處理。const vectorv = static_cast>(v); // c++98不支援,c++11支援
當然會有一些特殊的情景需要注意,比如:

template class a{};a<1 >> 5 > a;
此處》是讓1右移位5,而c++11則不會這樣認為,不過將位移用()起來就可以了。這種場景在實際應用中很少見。

走進C 11(五) 繼承構造

你的人生不會辜負你的。那轉錯的彎,流下的淚水,滴下的汗水,全都讓你成為獨一無二的自己。只是努力了一陣子,但一遇到困難就各種憂傷,好像自己努力了很久一樣。繼承構造 在繼承體系中,假設派生類想要使用基類的建構函式,必須要在建構函式中顯式宣告。舉個小例子 class basebase int value ...

走進C 11(七)禁用預設函式

君子的力量永遠是行動的力量,而不是語言的力量。在傳統c 中,若使用者沒有提供,則編譯器會自動為物件生成預設建構函式 default constructor 複製建構函式 copy constructor 賦值運算子 copy assignment operator operator 以及析構式 de...

走進C 11(十四)變長引數模板

解釋 c 03只有固定模板引數。c 11 加入新的表示法,允許任意個數 任意類別的模板引數,不必在定義時將引數的個數固定。變長模板 變長引數是依靠c 11新引入的引數包的機制實現的。templatestruct tuple tuple t0 types不含任何實參tuplet1 types含有乙個實...