真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中怎么應(yīng)用類(lèi)模板

這篇文章主要講解了“C++中怎么應(yīng)用類(lèi)模板”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++中怎么應(yīng)用類(lèi)模板”吧!

蘇尼特右網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

一、類(lèi)模板的引出:

1、在c++中是否能夠?qū)⒎盒偷乃枷霊?yīng)用在類(lèi)上呢?

我們?cè)谇懊娴膬善恼吕锩?,?duì)函數(shù)模板有了一個(gè)清楚的認(rèn)識(shí),作為類(lèi)比學(xué)習(xí),當(dāng)然泛型的思想是可以應(yīng)用到類(lèi)上的。

2、類(lèi)模板:

  • 一些類(lèi)主要用于存儲(chǔ)和組織數(shù)據(jù)元素

  • 類(lèi)中數(shù)據(jù)組織的方式和數(shù)據(jù)元素的具體類(lèi)型無(wú)關(guān)

  • 如:數(shù)組類(lèi),鏈表類(lèi),Stack類(lèi),Queue類(lèi)等等

  • c++中將模板的思想應(yīng)用于類(lèi),使得類(lèi)的實(shí)現(xiàn)不關(guān)注數(shù)據(jù)元素的具體類(lèi)型,而只關(guān)注類(lèi)所需要實(shí)現(xiàn)的功能

3、C++中的模板:

以相同的方式處理不同的類(lèi)型

在類(lèi)聲明前使用template進(jìn)行標(biāo)識(shí)

template < typename T >//T表示泛指類(lèi)型

class Operator
{
   public:
      T op(T a , T b);
};

4、類(lèi)模板的應(yīng)用

  • 只能顯示指定具體類(lèi)型,無(wú)法自動(dòng)推導(dǎo)(我們的函數(shù)模板是可以實(shí)現(xiàn)自動(dòng)推導(dǎo)具體類(lèi)型的)

 //使用具體類(lèi)型""定義對(duì)象
Operator op1;
Operator op2;

int i = op1.op(1,2);
string s = op2.op("txp","C++");
  
  • 聲明的泛指類(lèi)型T可以出現(xiàn)在類(lèi)模板的任意地方

  • 編譯器對(duì)類(lèi)模板的處理方式和函數(shù)模板相同

-從類(lèi)模板通過(guò)具體類(lèi)型產(chǎn)生不同的類(lèi)

-在聲明的地方對(duì)類(lèi)模板代碼本身進(jìn)行編譯

-在使用的地方對(duì)參數(shù)替換后代碼進(jìn)行編譯

代碼實(shí)踐:

#include 
#include 

using namespace std;

template < typename T >
class Operator
{
public:
    T add(T a, T b)
    {
        return a + b;
    }
    T minus(T a, T b)
    {
        return a - b;
    }
    T multiply(T a, T b)
    {
        return a * b;
    }
    T divide(T a, T b)
    {
        return a / b;
    }
};

string operator-(string& l, string& r)// 全局函數(shù)方式重載 - 操作符,編譯通過(guò);先類(lèi)內(nèi)部、再全局
{
    return "Minus";
}

int main()
{
    Operator op1;
    
    cout << op1.add(1, 2) << endl;
    
    Operator op2; // 第二次使用類(lèi)模板時(shí)進(jìn)行編譯,但是并不是對(duì)所有模板中的函數(shù)進(jìn)行了第二次編譯,是分步編譯的,首先編譯的是構(gòu)造函數(shù),此時(shí)用的是默認(rèn)的,沒(méi)有問(wèn)題,這里編譯通過(guò);
    
    cout << op2.add("Txp", "C++") << endl;
    cout << op2.minus("Txp", "C++") << endl; // 如果沒(méi)有定義全局的重載 - 操作符的函數(shù)時(shí),字符串相減沒(méi)有定義,報(bào)錯(cuò);這里報(bào)錯(cuò)展示出來(lái)是為了證明類(lèi)模板編譯也是經(jīng)過(guò)了兩次編譯;這里編譯器針對(duì) minus() 函數(shù)進(jìn)行第二次編譯;定義全局的重載 - 操作符函數(shù)后,打印 Minus ;
    
    return 0;
}


 

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
3
TxpC++
Minux

 

5、類(lèi)模板的工程應(yīng)用

  • 類(lèi)模板必須在頭文件中定義

  • 類(lèi)模板不能分開(kāi)實(shí)現(xiàn)在不同的文件中

  • 類(lèi)模板外部定義的成員函數(shù)需要加上模板<>聲明

代碼實(shí)踐:

Operator.h頭文件:

#ifndef _OPERATOR_H_
#define _OPERATOR_H_

template < typename T >
class Operator
{
public:
    T add(T a, T b);
    T minus(T a, T b);
    T multiply(T a, T b);
    T divide(T a, T b);
};

template < typename T >
T Operator::add(T a, T b)
{
    return a + b;
}


template < typename T >
T Operator::minus(T a, T b)
{
    return a - b;
}


template < typename T >
T Operator::multiply(T a, T b)
{
    return a * b;
}


template < typename T >
T Operator::divide(T a, T b)
{
    return a / b;
}

#endif
 

test.cpp文件:

#include 
#include 
#include "Operator.h"

using namespace std;


int main()
{
    Operator op1;
    
    cout << op1.add(1, 2) << endl;
    cout << op1.multiply(4, 5) << endl;
    cout << op1.minus(5, 6) << endl;
    cout << op1.divide(10, 5) << endl;
    
    return 0;
}


輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
3
20
-1
2

感謝各位的閱讀,以上就是“C++中怎么應(yīng)用類(lèi)模板”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++中怎么應(yīng)用類(lèi)模板這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站題目:C++中怎么應(yīng)用類(lèi)模板
URL分享:http://weahome.cn/article/pscsdi.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部