日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板成员函数的实例化

發布時間:2025/3/21 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板成员函数的实例化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 默認情況下,一個類模板的成員函數只有當程序用到它時才進行實例化。

(即使某種類型不能完全符合模板操作的要求(參見9.2節,第294頁),我們仍然能用該類型實例化類todo)。

eg.

//實例化Blob<int>和接受initializer_ list<int>的構造函數 Blob<int> squares = {0,1,2,3,4,5,6,7,8,9};//實例化Blob<int>: :size() const for (size_ t i = 0; i != squares.size() ; ++i)squares[i] = i*i; //實例化B1ob<int>: :operator[] (size_ t)

1.1 在類代碼內簡化模板類名的使用

一個類模板類型必須提供模板實參,在類模板自己的作用域中,我們可以直接使用模板名而不提供實參

//若試圖訪問一個不存在的元素,BlobPtr拋出一個異常 template <typename T> class BlobPtr { public:BlobPtr() : curr(0) { }BlobPtr (Blob<T> &a, size_ t sz = 0) : wptr (a.data)curr (sz) { }T& operator* () const{auto P = check (curr, "dereference past end") ;return (*p) [curr]; // (*p) 為本對象指向的vector} //遞增和遞減 BlobPtr& operator++(); //前置運算符 BlobPtr& operator--() ; private://若檢查成功,check返回一個指向vector的shared_ ptr std: :shared ptr<std: :vector<T>>check(std: :size_ t, const std: :string&) const;//保存一個weak_ ptr,表示底層vector可能被銷毀 std: :weak_ ptr<std: :vector<T>> wptr; std: :size_ t curr; //數組中的當前位置 }; 遞增和遞減實際上是 BlobPtr<T>& operator++ () ; B1obPtr<T>& operator--() ;

1.2 在類模板外使用類模板名

當我們在類模板外定義其成員時,直到遇到類名才表示進入類的作用域

//后置:遞增/遞減對象但返回原值 template <typename T> BlobPtr<T> BlobPtr<T>: :operator++ (int) {//此處無須檢查;調用前置遞增時會進行檢查BlobPtr ret = *this; //既是 BlobPtr<T>ret = *this;++*this;//推進一個元素;前置++檢查遞增是否合法return ret; // 返回保存的狀態 }

1.3 在模板作用域中引用模板類型

一個類模板中的代碼如果使用了另外一個模板,通常不將一一個實際類型(或值)的名字用作其模板實參。相反的,我們通常將模板自己的參數當作被使用模板的實參。
eg,我們的data成員使用了兩個模板,vector和shared_ ptr。 我們知道,無論何時使用模板都必須提供模板實參。

data 使用了Blob的類型參數來聲明data是一個shared_ ptr的實例,此shared ptr指向一個保存類型為T的對象的vector實例。 std: :shared_ _ptr<std: :vector<T>> data;Blob<string>,data 為shared_ ptr<vector<string>> Blob<int>, data為shared_ ptr<vector<int>>

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板成员函数的实例化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。