c 學習筆記 附新特性

2021-10-07 15:52:35 字數 2865 閱讀 3144

這裡有一些是新特性,有一些是為了描述新特性另外說明的一些東西。參考**入口

這篇文章對三種繼承方式講的很明白,感覺自己多說乙個字都不對勁。

成員預設是private,繼承預設也是private。

參考**入口 基類中的virtual…=0,為純虛函式,否則為虛函式。

class person

;class student : public person

;int main()

class allthing{};

class person:public allthing

;class student : public person{}; //虛函式可以繼承也可以被繼承

在文章的總結2有一段話:虛函式必須實現,如果不實現,編譯器將報錯。

感覺不能理解,不知道這句話是在何種情況下是對的。對於上面的**來說,既然抽象類可以被繼承,那麼子類是沒有實現虛函式的,也沒有報錯。

參考**入口 優先看

參考**入口 深入了解

externint a; 並不是像 int a; 一樣在記憶體開闢空間,語**讀可為 在其它檔案中引入int型變數a

class student

;int student::x = 99;//初始化

int main()

花括號**初始化。

initializer_list:這個東西可以支援我們初始化的花括號使用

在使用vector vec1;時,會自動生成initializer_list,initializer_list內含乙個array的頭指標和長度

參考**入口

注意:感覺講的很好。但是我認為有乙個錯誤,原始碼是沒有內含陣列的,只是拿了乙個指標和長度進來。可能版本不同把,我就沒有深究了。對於它的使用標準庫真是大量用了。

int a;cin>>a;

int b=2;

int c=3;

int d=max( );//香 發現新大陸啊

cout《多用於建構函式中,explicit建構函式是用來防止隱式轉換的。很小的乙個東西,看之前如果知道類物件的隱式轉換顯示轉換就很容易懂了。

for( decl : coll )

搭配auto香的一批,該有全域性的begin()和end(),引數放容器。

入口 這裡有它的底層原始碼,底層還是用了常用的for,穿入頭指標和尾指標,頭指標++,當頭指標等於尾指標時退出迴圈。右值引用,for結束則析構。

[參考**入口](

在寫**的時候,』='是不能省略的,和兩個關鍵字是乙個整體,或者說,這就是乙個關鍵字。

生成類的時候,會自動調動四種函式,=delete會禁用刪除當前函式,=****ult用於顯式要求編譯器提供合成版本的四大函式。

class text

;int main()

//當建立乙個類的時候,編譯器會自動建立四種函式,構造,析構,拷貝,複製。

用using定義別名,這個和typedef類似,乙個最大的不同是using可以別名化模板。

templateusing vec = std::vector>;//給乙個化名

veccoll;

//**摘自侯捷老師的課程

模板模板引數,這個感覺用的很少,想深究的自己去看。

使用using定義別名,和typedef功能一樣

示例:using func = void(*)(int,int);

擴充,在string標頭檔案中,都有basic_string string;

basic_string的原始碼在它的.**件裡面,三千多行,我就不看了。

參考**入口

當函式不會有異常的時候,是應只當noexcept,並且是在關鍵字實在函式的宣告或者是定義之後的。

對於異常,侯捷老師有專門的一講課,實際開發中異常處理經常出現,值得深究。

參考**入口

當父類的虛函式在子類中實現的時候使用,可以避免派生類中忘記重寫虛函式的錯誤

當引數不一致時,編譯器會報錯給予提示

表明當前類是不可繼承的。

說白了就是當前類是斷子絕孫的,只有爸爸,沒有兒子。

另外,函式後面加上const,參考**入口

說明當前函式為唯讀操作

這篇講的比較深入

編譯器自行推導型別。

這篇的使用比較直觀

知道語法即可,深入請自行了解。

csdn參考連線

可以看作是乙個結構體或者是泛化的pair,只不過配備了很多的函式進行操作。

參考**入口 這是我在看pair可能到的,類模板一大串。

// implicit constructiable for this type

template ::value &&

std::is_copy_constructible::value &&

std::is_convertible::value &&

std::is_convertible::value, int>::type = 0>

constexpr pair(const ty1& a, const ty2& b)

: first(a), second(b)

is_convertibleis_copy_constructible參考**入口

在pair中有很多類,上面是兩個例子。

用於給各位學習者參考,僅供參考。

也是對自己的學習記錄—

C 11新特性學習筆記(二)

c 11引入了lambda 匿名函式 這樣就可以在乙個函式只需呼叫一次的地方使用了,類似內聯函式。c 11 的 lambda 表示式規範如下 capture params mutable exception attribute ret 1 capture params ret 2 capture p...

學習C 新特性(二)

1 右值引用 c 11之前,左值 表示式之後還持久存在的物件 右值 表示式結束後不存在的臨時物件 c 11之後 右值分純右值 將亡值 純右值 純粹的字面量 如 10,true 或者求值結果相當於字面量或匿名臨時物件。字串字面量只有在類中是右值,在普通函式中是左值 將亡值 即將被銷毀卻能移動的值。右值...

新特性筆記

特點 framgent 它不是activity,也不是四大元件之一,不需要androidmanifest.xml註冊,好比是乙個縮小版的activity,有著自己的介面和生命週期方法,以及接受屬於它自己的輸入事件 fragment 在 android 3.1版本中引入,片段可以復用 fragment...