編譯器支援的c++版本,我們只需要列印__cplusplus常量就可以知曉:
cout<<__cpluscplus《如果列印2011**則是c++11版本,列印2014**就是c++14版本,列印1997**則是c++1.0版本。如果使用新版本的ide,列印發現是1997**,則說明ide要開啟c++2.0的支援,需要進行配置,可以google以下如果配置即可。
在之前的c++版本中,使用模板可以實現對任意型別資料引數的傳遞。在2.0版本中,我們可以傳入不定數量的模板引數:
#include #include
using
namespace
std;
//3.必須定義乙個無引數的空print函式來處理遞迴最後args中引數為0個的情況
void
print(){}
//1.從第二個引數開始,可以傳入任意個數的引數,而且型別是任意的。注意'...'的位置
template//
2.這個函式完成了乙個遞迴的操作,每次將args引數包中的第乙個分離出來,剩下的再次遞迴
//但是這裡要非常注意,當args中的引數為0個時,則會呼叫上面的print()無引數版,所以這個無引數版的print()一定要定義,否則編譯出錯
void print(const t &firstarg, const types &... args)
intmain()
這裡最需要注意的就是"..."的位置,以及最後遞迴收斂時的無引數print()函式。
實現乙個簡單的tuple類。用於同時儲存不同型別、不同數量的資料。
#include #includeusing
namespace
std;
template
class
mytuple;
template
<>
class mytuple<>;
//定義乙個模板,包含乙個型別head和一包型別tail
template//
定義乙個類,繼承於比他自己少第乙個引數的父類
class mytuple: private mytuple
//建構函式,v賦值給m_head,vtail傳遞給父類建構函式
mytuple(head v, tail... vtail) : m_head(v), inherited(vtail...) {}
//獲取當前m_head
head head()
//return後,轉型為父類型別,這樣再次獲取head(),就可以獲取到下乙個m_head
inherited &tail()
protected
:
//第乙個元素
head m_head;
};int
main()
在2.0版本以前,表示空指標可以使用0和null:
//以前使用的兩種初始化指標為空的方式
void * ptr =null;
void * ptr = 0;
在2.0中,空指標有乙個特殊的值來代替,就是nullptr:
void * ptr1 =null;void * ptr2 = 0
;void * ptr3 = nullptr;
//c++2.0的新關鍵字
另外還有乙個nullptr_t是nullptr的型別,即decltype(nullptr),值是void *。
這樣就可以通過這個初始化的值來區分需要呼叫的函式,例如:
void * func(int);void *func(void *);
func(
0); //
呼叫func(int)
func(null); //
呼叫func(int)
func(nullptr); //
呼叫func(void *)
auto關鍵字是c++2.0的新的關鍵字,用來自動推導變數的型別。
例如:
auto i = 43; //i是int
double
f();
auto d = f(); //
d是double型別,自動從f()的返回值推導
推導比較長的型別(偷懶):
vectorv;auto pos = v.begin(); //
pos的型別為vector::iterator
推導很難的型別:
auto lf = (int x)->bool; //lf的型別時lambda函式
C C 2 0新特性與C 3 5新特性
c 2.0新特性與c 3.5新特性 一 c 2.0 新特性 1 泛型 listobj list new list obj list.add new myobject 2 部分類 partial namespace set 或在另乙個檔案中 public partial class class1 3 ...
C 2 0的新特性
c 2.0的新特性 1 區域性型別 就是把乙個類 介面,結構 分成幾部分,系統編譯時自動的組合 利用關鍵字partial修飾 partial class a partial class a 只要類的一部分繼承乙個父類,那整個類都繼承。沒一部分都可以繼承乙個介面,則整個類繼承所有介面 類的一部分一但被...
Django 2 0 的新特性
1 url編寫進行了簡化 新django.urls.path 功能允許更簡單,更可讀的url路由語法。例如,以前的django發行版中的這個例子 url r articles p 0 9 views.year archive 需要匯入 from django.conf.urls import url...