2018-05-16

數(shù)據(jù)類型轉(zhuǎn)換

//static_cast<int>(10.1) 靜態(tài)轉(zhuǎn)換 不適應(yīng)于指針 <>要轉(zhuǎn)換的類型 ()要轉(zhuǎn)換的數(shù)據(jù)
//reinterpret_cast<void>( pchar+i) 用于指針類型轉(zhuǎn)換 C語言 直接賦值
//涉及const 必須要用 const_cast<int
>

//dynamic_cast<huahua*>(pzi); //dynamic_cast用于安全的轉(zhuǎn)換父類對(duì)象與子類對(duì)象 如果不匹配 轉(zhuǎn)換失敗為null
//主要用于多態(tài) 依賴于虛函數(shù)

//父類
class huahua
{
public:
    int hua1;
    virtual void run()
    {
        cout << "hhhhhhh" << endl;
    }


};
//子類
class xiaohua:public huahua
{
public:
    int xiaohua1;
    void run()
    {
        cout << "xxxxhhhhhhh" << endl;
    }

};

void mainr1()
{
    //printf("%d",10.1); //垃圾值 printf不會(huì)完成數(shù)據(jù)類型轉(zhuǎn)換
    //printf("%d", static_cast<int>(10.1)); //默認(rèn)轉(zhuǎn)換

    //int*pint = new int(1);
    //char*pchar = reinterpret_cast<char*>(pint); //指針類型轉(zhuǎn)換
    //for (int i = 0; i < 3; i++)
    //{

    //  cout << static_cast<int>(*(pchar + i)) << "  "<<reinterpret_cast<void*>( pchar+i) <<endl;
    //}

    int num[5]{ 1,2,3,4,5 };
    const int *p = num;
    //int*pint = reinterpret_cast<int*>(p); // reinterpret_cast 不適用于const
    int*pint = const_cast<int*>(p);
    //for (size_t i = 0; i < 5; i++)
    //{
    //  cout << pint[i] << "  " << reinterpret_cast<void*>(pint + i) << endl;
    //  
    //}

    //父類指針可以經(jīng)過轉(zhuǎn)換訪問子類對(duì)象 反之一般不安全

    huahua *pfu = new huahua;
    xiaohua *pzi = new xiaohua;
    
    huahua *phua = dynamic_cast<huahua*>(pzi); //子類對(duì)象轉(zhuǎn)換為父類指針
    phua->run();

    xiaohua *pxiaohua = dynamic_cast<xiaohua*>(pfu); //轉(zhuǎn)換失敗 會(huì)設(shè)置為null
    if (pxiaohua != nullptr)
    {
        pxiaohua->hua1 = 10; //訪問子類繼承父類的對(duì)象
        pxiaohua->run();
        (*pxiaohua).huahua::run(); //調(diào)用子類中的父類的方法
    }

    cin.get();
}

delete刪除一個(gè)函數(shù)

void show(int num)
{
   cout << num << endl;
}
void show(char num) = delete; //刪除一個(gè)函數(shù)
//函數(shù)聲明=delete
// 精確匹配  刪除其他參數(shù)匹配類型函數(shù)


class myclass
{
public:
   //myclass() = delete; //刪除構(gòu)造函數(shù)
   ~myclass() = delete;
};

大括號(hào)處理數(shù)據(jù)

#include<initializer_list>

void show(initializer_list<int>list)
{
    for (auto i : list)
    {
        cout << i << endl;
    }
}

void show(initializer_list<char*>list)
{
    for (auto i : list)
    {
        cout << i << endl;
    }
}

int*getmem(initializer_list<int>list)
{
    int length = list.size();
    int *p = new int[length];
    int*pback = p; //備份指針
    for (auto i : list)
    {
        *(p++) = i; //循環(huán)賦值
    }
    return pback;
}

void mainr2()
{
    show({ 1,2,3,4,5,6 });
    show({"DDD","eeee","FFFFF","dddd"});

    int*p = getmem({ 1,2,3,4,5,6 });
    for (size_t i = 0; i < 6; i++)
    {
        cout << p[i] << " ";
    }
    cout << endl;

    cin.get();
}

forward_list


#include<forward_list>

void mainr3()
{
    forward_list<int>list1{ 1,2,3,4,5 };
    forward_list<int>list2{ 1,2,3,4,5 };
    //list1.push_front(10); //只能頭插


    list2.assign(10,19); //分配并初始化

    //for (auto i : list1)
    //{
    //  cout << i << endl;
    //}

    //auto it = list1.before_begin(); //鏈表頭結(jié)點(diǎn)
    //list1.insert_after(it, 18); //鏈表的插入

    auto ib = list1.begin();
    list1.insert_after(ib, 19);

    int a[5]{ 1,2,3,4,5 };
    list1.insert_after(ib, a, a + 5); //插入
    list1.erase_after(++ib); //刪除

    list1.sort();  
    list2.sort();
    list1.merge(list2);//歸并

    cout << list1.max_size() << endl; //最大

    list1.reverse(); //反轉(zhuǎn)

    for (auto ib = list1.begin(), ie = list1.end();ib != ie;ib++)
    {
        cout << *ib << endl;
    }



    cin.get();
}

if_exits

#include<iostream>
#include<list>

//類模板
template<class T>
class Tclass
{
public:
    T t;
    void show(T tx)
    {  
        cout << tx << endl;
    } 



};


void main()
{
    
    //int num;

    Tclass<int> t1;
    list<int> mylist;   //檢測某個(gè)模板有沒有根據(jù)類型實(shí)例化


    _if_exists(Tclass<int>)  //如果存在 執(zhí)行塊語句  可以判斷變量 函數(shù) 類型
    {
        cout << "num is" << endl;
    }

    _if_not_exists(Tclass<int>)
    {
        cout << "num no" << endl;
    }

    cin.get();
}

引用包裝器


void change(int &num)
{
    num = 3;
}

template<class T>
void show(T t)  //函數(shù)模板 改成引用
{
    cout << t << endl;
    t++;
}
void main()
{
    double db(1);
    double &rdb(db);
    show(ref(db));  //ref  引用包裝器  讓模板識(shí)別出引用

    cout << db << endl;

    cin.get();
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市残拐,隨后出現(xiàn)的幾起案子翎承,更是在濱河造成了極大的恐慌贾虽,老刑警劉巖比吭,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異活翩,居然都是意外死亡畜埋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門烟瞧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗鸭,“玉大人,你說我怎么就攤上這事参滴∏堪叮” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵砾赔,是天一觀的道長蝌箍。 經(jīng)常有香客問我,道長暴心,這世上最難降的妖魔是什么妓盲? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮专普,結(jié)果婚禮上本橙,老公的妹妹穿的比我還像新娘。我一直安慰自己脆诉,他們只是感情好甚亭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著击胜,像睡著了一般亏狰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上偶摔,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天暇唾,我揣著相機(jī)與錄音,去河邊找鬼。 笑死策州,一個(gè)胖子當(dāng)著我的面吹牛瘸味,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播够挂,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼旁仿,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了孽糖?” 一聲冷哼從身側(cè)響起枯冈,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎办悟,沒想到半個(gè)月后尘奏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡病蛉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年炫加,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铺然。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俗孝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出探熔,到底是詐尸還是另有隱情驹针,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布诀艰,位于F島的核電站柬甥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏其垄。R本人自食惡果不足惜苛蒲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绿满。 院中可真熱鬧臂外,春花似錦、人聲如沸喇颁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橘霎。三九已至蔫浆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姐叁,已是汗流浹背瓦盛。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工洗显, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人原环。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓挠唆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘱吗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玄组,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,511評(píng)論 1 51
  • 這篇文章也許會(huì)持續(xù)更新,也歡迎大家提出問題柜与,一起探討巧勤。原文地址AC4Fun,轉(zhuǎn)載請(qǐng)注明出處嵌灰。 **********...
    羲牧閱讀 4,820評(píng)論 7 23
  • C++類型轉(zhuǎn)換總結(jié) 本章內(nèi)容:1 前言2 static_cast3 dynamic_cast4 const_cas...
    Haley_2013閱讀 949評(píng)論 0 50
  • HTTP簡介 HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用...
    一個(gè)_快樂的人閱讀 230評(píng)論 0 0
  • 熬夜至此看完韓冬兒弄匕,有種不可言狀的酸爽。 天上的星星千千萬萬顆沽瞭,只要看懂一顆就夠了迁匠。 即使過了兩千年,你也還要記得...
    微_風(fēng)起閱讀 152評(píng)論 0 0