欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c++-模板-創(chuàng)新互聯(lián)

c++-模板
  • 函數(shù)模板
  • 類模板
  • 模板重載
  • 參數(shù)類型推斷
    • 類型轉(zhuǎn)換
    • 顯示指明
  • 模板進階 -- 還沒看

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比平陸網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式平陸網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平陸地區(qū)。費用合理售后完善,十年實體公司更值得信賴。函數(shù)模板

相當于函數(shù)重載的進階,類型參數(shù)化

數(shù)據(jù)的類型也可以通過參數(shù)傳遞
在函數(shù)定義時可以不指明具體的數(shù)據(jù)類型,當發(fā)生函數(shù)調(diào)用時,編譯器根據(jù)傳入的實參自行推斷數(shù)據(jù)類型,相當于類型參數(shù)化

函數(shù)模板

建立一個通用函數(shù),用到的數(shù)據(jù)類型(返回值、形參類型、局部變量類型)無需具體指定,用一個標識符來站位,等發(fā)生函數(shù)調(diào)用時再根據(jù)傳入的實參來逆推出真正的類型
一旦定義類函數(shù)模板,就可以將類型參數(shù) 用于函數(shù)定義和函數(shù)聲明,(將內(nèi)置類型的地方,用類型參數(shù)來代替)

template函數(shù)模板關(guān)鍵字<>占位符typename T聲明具體的類型參數(shù),類型參數(shù)是T
template模板頭,模板頭中包含的類型參數(shù)可以用在函數(shù)定義的各個位置,包括返回值、形參列表和函數(shù)體

#includeusing namespace std;

templateT mmax(T a,T b);

templatevoid swap(T *a,T *b) // templatevoid swap(T *a,T *b) 也是可以的
{T temp=*a;
    *a=*b;
    *b=temp;
}

template// 可換行,但不能有分號
T mmax(T a,T b)
{if (a>=b)
        return a;
    else
        return b;
}

int main()
{int a=10,b=20;
    swap(&a,&b);
    cout<
類模板

類模板中定義的類型參數(shù)可以在類聲明和類定義中

templateclass MyPoint
{private:
    T1 x;
    T2 y;
public:
    MyPoint(T1 x,T2 y);
    void setx(T1 x);
    T1 getx() const;
    void sety(T2 y);
    T2 gety() const; // const 成員函數(shù) 不能修改成員this的成員值

    MyPoint *print() const;
};

templateMyPoint::MyPoint(T1 x,T2 y)
{this->x=x;
    this->y=y;
}

templatevoid MyPoint::setx(T1 x)
{this->x=x;
}

templatevoid MyPoint::sety(T2 y)
{this->y=y;
}

templateT1 MyPoint::getx() const
{return this->x;
}

templateT2 MyPoint::gety() const
{return this->y;
}

templateMyPoint* MyPoint::print() const
{return new MyPoint(this->x,this->y);
}

int main()
{// 創(chuàng)建對象
    MyPointp1(1,2);
    MyPointp2(3.,4.);
    MyPointp3(5,"lisi");

    // 創(chuàng)建對象
    MyPoint*p4=new MyPoint(6,7);

    // 接收返回值
    MyPoint*point_ptr=p1.print();
    cout<getx()<<" "<gety()<*point_ptr2=p2.print();
    cout<getx()<<" "<gety()<

例子2 !!!

#includeusing namespace std;

templateclass List
{private:
    int length; // 數(shù)組個數(shù)
    T *ptr; //數(shù)組指針
public:
    List(int length);
    List(List &arr); // 構(gòu)造函數(shù)重載
    ~List();

    void push_back(const T &v); // 添加元素
    // List & operator=(const List &a); // 數(shù)組見賦值, 成員函數(shù),返回的是引用

    T size();
    T & operator[](int idx); // 成員函數(shù),返回的是引用
};

templateList::List(int length)
{this->length=length;
    if (length==0)
    {this->ptr=NULL;
    }
    else
    {this->ptr=new T[this->length]();
    }
}

templateList::List(List &arr)
{if (!arr.ptr)
    {this->ptr==NULL;
        this->length=0;
        return ; // 這個也很重要
    }

    this->ptr=new T[arr.length];
    memcpy(this->ptr,arr.ptr,sizeof(T)*arr.length); // 內(nèi)存賦值
    this->length=arr.size;
}

templateList::~List()
{if (this->ptr)
    {delete[] this->ptr;
    }
    cout<<"析構(gòu)"<void List::push_back(const T &v)
{if (this->ptr)
    {// 注意寫法?。?!
        T *temp_ptr=new T[this->length+1](); // 重新分配空間
        memcpy(temp_ptr,this->ptr,sizeof(T)*this->length); // 拷貝原有數(shù)組;
        delete[] this->ptr;
        this->ptr=temp_ptr;
    }
    else
    {this->ptr=new T[1]();
    }
    this->ptr[this->length++]=v;
}

templateT List::size()
{return this->length;
}

templateT & List::operator[](int idx)
{return this->ptr[idx];
}


int main()
{ListL(3);
    cout<
模板重載
#includeusing namespace std;

templatevoid mswap(T &a,T &b);
templatevoid mswap(T a[],T b[],int len);
templatevoid printArray(T arr[],int len);

int main()
{int a=10,b=20;
    cout<1,2,3};
    int arr2[3]={4,5,6};
    
    cout<<"******"<void mswap(T &a,T &b)
{T temp=a;
    a=b;
    b=temp;
}

templatevoid mswap(T a[],T b[],int len)
{T temp;
    for (int i=0;itemp=a[i];
        a[i]=b[i];
        b[i]=temp;
    }
}

templatevoid printArray(T arr[],int len)
{for (int i=0;icout<
參數(shù)類型推斷 類型轉(zhuǎn)換
templatevoid func(T a, T b);
func(1,2.3); // 錯誤不能進行隱式的類型轉(zhuǎn)換,且不知道T應(yīng)該是哪個類型

templatevoid func(T a);
int a[10];
func(a); // T的類型為int *, 會進行類型轉(zhuǎn)換

templatevoid func(T &a);
int a[10];
func(a); // 當函數(shù)參數(shù)是引用類型時,數(shù)組不會轉(zhuǎn)換為指針,T的類型為int [10]

注意

當顯示指明類型參數(shù)時,可以進行類型轉(zhuǎn)換(隱式)

templatevoid func(T a, T b);
func(1,2.3); // 正確的
顯示指明
// 函數(shù)調(diào)用過程中只能推斷出T1 不能推斷出 T2,所以必須顯示指明
templatefunc(T1 a)
{T2 b;
}

// 顯示指明是,是按順序指明的
func(10)
模板進階 – 還沒看

7.6

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當前標題:c++-模板-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://aaarwkj.com/article34/pegpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作軟件開發(fā)、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站App開發(fā)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

青青草国产成人自拍视频在线观看 | 国产一区二区三区av| 97人妻精品一区二区三区六| 国产剧情在线观看网站| 精品亚洲一区二区在线| 久碰精品少妇中文字幕av| 朋友的尤物人妻中文字幕| 免费爱爱视频在线观看| 91久久精品凹凸一区二区| 日本一区二区三区久久久| 成人国产视频免费观看| 欧美国产综合欧美一区二区三区 | 日韩欧美精品久久黄| 精品国产一区二区av麻豆| 日韩三级视频一区二区| 麻豆国产传媒片在线观看| 国产亚洲精品第一最新| 日韩精品视频在线不卡| 日本熟妇一区二区三区高清视频| 男女视频一区二区三区在线观看| 91麻豆精品在线观看| 亚洲黄色录像一区二区人妻黑人 | 亚洲国产一区二区三区三州| 国产精品一区二区三区国产| av永久免费观看网站| 国产精品综合av一区二区国产馆| 亚洲欧洲一区二区免费| 国产熟女一区二区精品视频| 亚洲欧美成人自偷自拍一区| 欧美成人精品在线观看| 日日插天天干夜夜操| 午夜在线观看视频免费| 99精品午夜福利在线| 18禁黄网站禁片免费视频| 久久成人综合亚洲精品欧美| 精品国产无遮挡污污网站| 国产黄色大片在线关看| 成人自拍偷拍在线视频| 成人性生交大片免费看中文 | 亚洲成年人黄色在线观看| 十八禁在线观看网址免费|