GeekBand C++ WEEK3

一 . 關(guān)于類型轉(zhuǎn)換

1. conversion function (轉(zhuǎn)換函數(shù)) —— “轉(zhuǎn)出去”

  1. 類型轉(zhuǎn)換函數(shù)的一般形式如下:
    operator *type*() const;
  2. 類型轉(zhuǎn)換函數(shù)的特點(diǎn):
  • 必須是類的成員函數(shù)簿盅;
  • 形參列表必須為空;
  • 不能聲明返回類型;
  • 類型轉(zhuǎn)換函數(shù)通常應(yīng)該是 const
  • 如果需要剔桨,可以寫多個(gè)類型轉(zhuǎn)換函數(shù)

3.參考案例:

operator double() const {
    return  (double) (m_numerator / m_denominator) ;
}

2. non-explicit-one-argument ctor —— “轉(zhuǎn)回來(lái)”

  1. one-argument 不是 one-parameter. .
  2. 能通過(guò)一個(gè)實(shí)參調(diào)用的構(gòu)造函數(shù)定義了一條從構(gòu)造函數(shù)的參數(shù)類型向類類型隱式轉(zhuǎn)換的規(guī)則,
  3. 參考案例:
public :
      Fraction (int num, int den = 1) : m_num(num), m_den(den) {}

Fraction de = f + 4; //調(diào)用 non-explicit ctor 將 4 轉(zhuǎn)為 Fraction(4,1)

3. explicit-one-argument ctor

  1. explicit 作為關(guān)鍵字鉴嗤,主要用在構(gòu)造函數(shù)前面盟劫,而且關(guān)鍵字 explicit 只對(duì)一個(gè)實(shí)參的構(gòu)造函數(shù)有效,并且只能在類內(nèi)聲明構(gòu)造函數(shù)時(shí)使用 explicit 關(guān)鍵字商架,在類外定義時(shí)不應(yīng)重復(fù)堰怨,
public :  // 這樣就不能自動(dòng)將 4 變?yōu)?4/1  
      explicit Fraction (int num, int den = 1) : m_num(num), m_den(den) {}

4. 避免有二義性的類型轉(zhuǎn)換

  1. 當(dāng)類同時(shí)定義了類型轉(zhuǎn)換運(yùn)算符及重載運(yùn)算符時(shí)特別容易產(chǎn)生二義性,
  2. 如果我們對(duì)同一個(gè)類既提供了轉(zhuǎn)換目標(biāo)時(shí)算術(shù)類型的類型轉(zhuǎn)換蛇摸,也提供了重載的運(yùn)算符备图,則將會(huì)遇到重載運(yùn)算符與內(nèi)置運(yùn)算符的二義性問(wèn)題。

二 . 關(guān)于 C++ 2.0

1. 了解編譯器對(duì)c++ 2.0 的支持度

  1. 對(duì)Dev C++ 最簡(jiǎn)單的方法:
#include <iostream>

int main()
{
  std::cout <<  __cplusplus ;
}

2. c++ 2.0 的幾個(gè)新特性

**1. auto **

  1. 引進(jìn)原因:編譯器常常需要把表達(dá)式的值賦給變量赶袄,因此需要在聲明變量的時(shí)候清楚知道表達(dá)式的類型揽涮,但有時(shí)很難做到,因此引進(jìn) auto 類型說(shuō)明符饿肺,用它讓編譯器替我們區(qū)分析表達(dá)式所屬類型蒋困。
  2. 因?yàn)闆](méi)有賦值,無(wú)法推斷出是什么類型敬辣,因此 auto 定義的變量必須有初始值雪标。
  3. 使用 auto 也可以在一條語(yǔ)句中聲明多個(gè)變量零院,但該語(yǔ)句中的所有變量的初始基本數(shù)據(jù)類型必須一致。

**2. ranged_base for **

  1. 基本理解:range for 這種語(yǔ)句遍歷給定序列中的每個(gè)元素并對(duì)序列中的每個(gè)值執(zhí)行某種操作村刨;
  2. 語(yǔ)法形式:
 for ( declaration : expression){
           statement

declaration 聲明一個(gè)變量告抄,給變量將被用于訪問(wèn)序列中的基礎(chǔ)元素;
expession 是一個(gè)對(duì)象烹困, 用于表示一個(gè)序列玄妈,或者說(shuō)是一個(gè)容器。

  • 如果要想改變序列中的值髓梅,必須把循環(huán)變量定義成引用類型拟蜻。

3. variadic templates —— 數(shù)量不定的模版參數(shù)

  1. variadic template 就是一個(gè)接受可變數(shù)目參數(shù)的模板函數(shù)或模板類】荻觯可變數(shù)目的參數(shù)被稱為 parameter packet ;
  2. 語(yǔ)法:
template <typename T , typename... Args>
void foo (const T& t, const Args& ... rest)
  1. 當(dāng)我們需要知道包中有多少元素是酝锅,可以使用 sizeof... 運(yùn)算符。

三 . 關(guān)于 templete -- 初識(shí)模版

1. function template --函數(shù)模版

  1. 一個(gè)函數(shù)模版就是一個(gè)公式奢方,可用來(lái)生成針對(duì)特定類型的函數(shù)版本搔扁;
  2. 語(yǔ)法:
    template <typename T>
    模版定義以關(guān)鍵字 template 開(kāi)頭,后跟一個(gè)模版參數(shù)列表蟋字,用<>將以逗號(hào)分隔的一個(gè)或多個(gè)模版參數(shù).
  3. 當(dāng)我們調(diào)用一個(gè)函數(shù)模板時(shí)稿蹲,編譯器用函數(shù)實(shí)參來(lái)為我們推斷函數(shù)實(shí)參--實(shí)參推導(dǎo);
  4. 在模版參數(shù)列表中鹊奖,class 苛聘, typename 這兩個(gè)關(guān)鍵字的含義相同,可以相互使用忠聚。

2. class template --類模版

  1. 類模版是用來(lái)生成類的藍(lán)圖的设哗;
  2. 在設(shè)計(jì) class 時(shí),可以把類型抽出來(lái)允許使用者任意指定两蟀;
  3. 編譯器不能為類模版推斷模版參數(shù)類型网梢,因此為了使用類模版,我們必須在模版名后的尖括號(hào)中提供額外信息 -- 就是在使用時(shí)指定赂毯;

3. member template --成員模版

  1. *一個(gè)類(無(wú)論是普通類還是類模版)可以包含本身是模版的成員函數(shù)战虏,這種成員被稱為成員模版。 *
  2. 其實(shí)就是說(shuō)模版里面的一個(gè)member欢瞪,而它自己本身又是一個(gè)template ;

**4. 關(guān)于模版特化的基礎(chǔ)知識(shí) **

  1. 模版特化:

    1. 當(dāng)我們不希望使用模版版本時(shí)活烙,可以定義類或函數(shù)模版的一個(gè)特例化版本;
    2. 一個(gè)特例化版本就是模版的一個(gè)獨(dú)立的定義遣鼓,在其中一個(gè)或多個(gè)模版參數(shù)被指定為特定的類型啸盏。
  2. 模版偏特化 (partial specialization) -- 部分特例化:

  3. 偏特化的模版參數(shù)列表是原始模版的參數(shù)列表的一個(gè)子集或者是一個(gè)特例化版本。

  4. 我們可以只特化成員函數(shù)而不是特例化整個(gè)模版骑祟。

模版總結(jié): 學(xué)習(xí)基礎(chǔ)知識(shí)為第五周做準(zhǔn)備

四 . 本周課程疑問(wèn)

  • 關(guān)于 pointer-like , function-like 不是很懂回懦,以后慢慢學(xué)習(xí)气笙。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怯晕,隨后出現(xiàn)的幾起案子潜圃,更是在濱河造成了極大的恐慌,老刑警劉巖舟茶,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谭期,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吧凉,警方通過(guò)查閱死者的電腦和手機(jī)隧出,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阀捅,“玉大人胀瞪,你說(shuō)我怎么就攤上這事∷潜桑” “怎么了凄诞?”我有些...
    開(kāi)封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)忍级。 經(jīng)常有香客問(wèn)我帆谍,道長(zhǎng),這世上最難降的妖魔是什么轴咱? 我笑而不...
    開(kāi)封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任既忆,我火速辦了婚禮,結(jié)果婚禮上嗦玖,老公的妹妹穿的比我還像新娘。我一直安慰自己跃脊,他們只是感情好宇挫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著酪术,像睡著了一般器瘪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绘雁,一...
    開(kāi)封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天橡疼,我揣著相機(jī)與錄音,去河邊找鬼庐舟。 笑死欣除,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挪略。 我是一名探鬼主播历帚,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼滔岳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挽牢?” 一聲冷哼從身側(cè)響起谱煤,我...
    開(kāi)封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禽拔,沒(méi)想到半個(gè)月后刘离,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睹栖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年硫惕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磨淌。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疲憋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出梁只,到底是詐尸還是另有隱情缚柳,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布搪锣,位于F島的核電站秋忙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏构舟。R本人自食惡果不足惜灰追,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狗超。 院中可真熱鬧弹澎,春花似錦、人聲如沸努咐。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渗稍。三九已至佩迟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竿屹,已是汗流浹背报强。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拱燃,地道東北人秉溉。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坚嗜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夯膀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容