vector>; //error
vector>; //ok
vector>; //ok
void f(int);
void f(void*);
f(0); //call f(int)
f(null); //有歧義
f(nullptr);//call f(void*)
auto i = 42; //int
double f();
auto d = f(); //double
auto n; //error
static auto vat = 0.19;
vectorv;
auto pos = v.begin();
auto f = (int x)-> bool
基本形式:
for( decl : coll )
等價於:
for( auto _pos = coll.begin(), _end = coll.end(); _pos != null; ++_pos)
或者(其中begin()和end()是全域性函式):
for( auto _pos = begin(coll), _end = end(coll); _pos != null; ++_pos)
for( int i : )
std::vectorvec;
...for( auto & elem : vec )
template < typename t>
void printelements( const t& coll )
}
template < typename t>
void printelements( const t& coll )
}
get() const
private:
int m_data;
};ostream& operator<<(ostream& os, const x& x)
int main();
cout << "\nelements:\n";
for (auto x : v)
return 0;
}
輸出:
x copy ctor.
x copy ctor.
x copy ctor.
x copy ctor.
x copy ctor.
elements:
x copy ctor.
1 x copy ctor.
3 x copy ctor.
5 x copy ctor.
7 x copy ctor.
9
為了防止呼叫拷貝建構函式,提高下率,加上引用。
for (auto &x : v)
執行輸出:
x copy ctor.
x copy ctor.
x copy ctor.
x copy ctor.
x copy ctor.
elements:
1 3 5 7 9
發現已經不呼叫拷貝建構函式了。
class c ;
int main()
}
報錯。去掉「explicit」後,可正常執行。
invalid initialization of reference of type 『const c&』 from expression of type 『std::__cxx11::basic_string』
在字串前面加上關鍵字r,表示這是乙個原始字串。
下面這兩個是等效的。
"\\\\n"
r"\\n"
下面這兩個也是等效的。
r"nc(a\
b\nc()"
)nc";
"nc(a\\\n b\\nc()\"\n )nc";
使用編碼字首制定字串編碼。如下
l"hello" // 定義wchar_t編碼的字串
字首有以下幾種:
- u8表示utf-8編碼。
- u表示char16_t
- u表示char32_t
- l表示寬字符集,型別wchar_t
c++11中的列舉型別如下所示:
enum class salutation : char ;
C 11 帶來的新特性 (1)
vector error vector okvector okvoid f int void f void f 0 call f int f null 有歧義f nullptr call f void auto i 42 int double f auto d f double auto n err...
c 11 新特性學習(1)
1.原始字面量 在 c 11 中新增了定義原始字串的字面量,定義方式為 r 原始字串 其中 兩邊的字串可以省略。原始字面量 r 可以直接表示字串的實際含義,而不需要額外對字串做轉義或連線等操作。如 n t縮排這種 比如 程式設計過程中,使用的字串中常帶有一些特殊字元,對於這些字元往往要做專門的處理,...
c 11的新特性
1 型別說明符auto 2.decltype提取型別 int a 0 decltype a b b 10 cout b endl 3.基於範圍的for迴圈 4.虛函式的override和final指示符 final修飾類 類無法被繼承 final修飾虛函式 虛函式不能被重寫 override就是輔助...