C++習(xí)題與解析(模板-02)

字號(hào):

題1.分析以下程序的執(zhí)行結(jié)果
    #include
    template
    T abs(T x)
    {
    return (x>0?x:-x);
    }
    void main()
    {
    cout<}
    解:
    abs()是一個(gè)函數(shù)模板,它返回參數(shù)的絕對(duì)值。在調(diào)用時(shí)自動(dòng)聯(lián)編相應(yīng)的abs()函數(shù)。
    所以輸出為:3,2.6
    題2.分析以下程序的執(zhí)行結(jié)果
    #include
    template
    class Sample
    {
    T n;
    public:
    Sample(){}
    Sample(T i){n=i;}
    Sample&operator+(consta Sample&);
    void disp(){cout<<"n="<    };
    template
    Sample&Sample::operator+(const Sample&s)
    {
    static Sample temp;
    temp.n=n+s.n;
    return temp;
    }
    void main()
    {
    Samples1(10),s2(20),s3;
    s3=s1+s2;
    s3.disp();
    }
    解:
    Sample為一個(gè)類模板,產(chǎn)生一個(gè)模板類Sample,并建立它的三個(gè)對(duì)象,調(diào)用重載運(yùn)算符+實(shí)現(xiàn)s1與s2的加法運(yùn)算,將結(jié)果賦給s3。
    所以輸出為:n=30