日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C++ Templates 筆記

 海漩渦 2014-05-04
第二章 函數(shù)模板

///max.hpp
template <typename T>
inline T const& max(T const& a,T const& b)
{
    return a<b?b:a;
}

///basics max.cpp
#include <iostream>
#include <string>
#include "max.hpp"
int main()
{
    int i = 42;
    std::cout<<"max(7,i): "<< ::max(7,i)<<std::endl;

    double f1 = 3.4;
    double ff2 = -6.7;
    /// @brief max前的::是為了確認(rèn)調(diào)用的是全局名字空間的max(),而不是標(biāo)準(zhǔn)庫(kù)的std::max()
    std::count << "max(f1,f2): "<< ::max(f1,f2) <<std::endl;

    std::string s1="tanxiaohai";
    std::string s2 ="tanhuifang";
    std::count<<"max(s1,s2): "<<max(s1,s2)<<std::endl;
}


2.3模板參數(shù)

函數(shù)模板有兩種類型參數(shù):
1.模板參數(shù):位于模板名稱的前面,在一對(duì)尖括號(hào)內(nèi)部進(jìn)行聲明:
     template <typename T>

2.調(diào)用參數(shù):位于函數(shù)模板后面,用圓括號(hào)進(jìn)行聲明
    max(T const& a,T const& b)

解決不同類型的多參數(shù):
(1)  可定義任意數(shù)量且不同類型的模板參數(shù):
    template <typename T1,typename T2 ...>

(2)  函數(shù)模板的實(shí)參演繹:
    template <typename T>
    inline T const& max(T const& a,T const & b);

    max<double>(4,4.2)

(3)  顯示指定模板實(shí)參:
    template <typename T1,typename T2,typename T3>
    inline T3 max(T1 const& a,T2 const& b)


2.4重載函數(shù)模板
重載解析可以看成是函數(shù)調(diào)用整個(gè)完整處理過(guò)程的一部分。

對(duì)函數(shù)調(diào)用的處理方法:
1.查找名稱,形成初始的重載集。
2.有必要時(shí)對(duì)集合進(jìn)行修改,(模板演繹)
3.刪除不匹配的候選函數(shù),得到可行的候選函數(shù)集。
4.執(zhí)行重載解析來(lái)尋找最佳候選函數(shù),找到即是最佳候選函數(shù),否則為二義性。
5.檢查最佳的候選函數(shù)。

 最佳匹配到最差匹配:

1.完美匹配。參數(shù)類型和實(shí)參的類型相同,或參數(shù)的類型是指向?qū)崊㈩愋偷囊谩?/div>

2.有細(xì)微調(diào)整匹配。如數(shù)組轉(zhuǎn)變、或添加const,讓類型int**的實(shí)參匹配類型為int const* const*.

3.發(fā)生提升的匹配。是一種隱式類型轉(zhuǎn)換,把占位少的整數(shù)轉(zhuǎn)為占位多的類型。如bool、char、short轉(zhuǎn)為int、unsigned int、long、unsigned long等,float到double

4.發(fā)生標(biāo)準(zhǔn)轉(zhuǎn)型(類型轉(zhuǎn)換)的匹配。

5.發(fā)生用戶自定義轉(zhuǎn)型的匹配。允許任何種類的隱式類型轉(zhuǎn)換。

6.和省略號(hào)匹配。省略號(hào)參數(shù)可以匹配任何類型。


對(duì)于T類型的右值,T和Tconst& 的匹配程度一樣。
對(duì)于T類型的左值,T和T&的匹配程度一樣。

非模板優(yōu)先。

指針轉(zhuǎn)型:
1.任意標(biāo)準(zhǔn)轉(zhuǎn)型都要優(yōu)于bool
2.從派生類指針到基類指針的轉(zhuǎn)型優(yōu)于到void*。
3.函數(shù)的轉(zhuǎn)型涉及到類繼承體系中的多個(gè)類,優(yōu)先選擇派生路徑最短的轉(zhuǎn)型。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多