亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中為什么不要模板化類繼承

發布時間:2021-11-24 10:52:49 來源:億速云 閱讀:158 作者:iii 欄目:大數據

本篇內容主要講解“C++中為什么不要模板化類繼承”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中為什么不要模板化類繼承”吧!

T.80:不要天真地模板化類繼承

Reason(原因)

Templating a class hierarchy that has many functions, especially many virtual functions, can lead to code bloat.

模板化包含很多成員函數,特別是虛函數的類繼承層次會導致代碼膨脹。

Example, bad(反面示例)

template<typename T>
struct Container {         // an interface
   virtual T* get(int i);
   virtual T* first();
   virtual T* next();
   virtual void sort();
};

template<typename T>
class Vector : public Container<T> {
public:
   // ...
};

Vector<int> vi;
Vector<string> vs;

It is probably a bad idea to define a sort as a member function of a container, but it is not unheard of and it makes a good example of what not to do.

為容器定義一個排序成員函數幾乎肯定就是一個壞主意,但這并非沒有先例,可以當作說明我們不應該做什么的好例子。

Given this, the compiler cannot know if vector<int>::sort() is called, so it must generate code for it. Similar for vector<string>::sort(). Unless those two functions are called that's code bloat. Imagine what this would do to a class hierarchy with dozens of member functions and dozens of derived classes with many instantiations.

編輯器接受這段代碼時,無法知道vector<int>::sort()是否被調用了,因此必須為之生成代碼。vector<string>::sort()的情況也一樣。只要這兩個函數沒有被調用,這就是一種代碼膨脹。想象一下:這種情況如果發生在一個包含數十個成員函數和被多次例示的數十個派生類的繼承結構時會發生什么。

Note(注意)

In many cases you can provide a stable interface by not parameterizing a base; see "stable base" and OO and GP

在很多情況下,你可以在不必參數化基類的情況下提供穩定的接口;參見“穩定的基類和OO and GP。

Enforcement(實施建議)

標記依賴模板參數的虛函數。

到此,相信大家對“C++中為什么不要模板化類繼承”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

项城市| 阿巴嘎旗| 伊川县| 高雄县| 临城县| 平遥县| 迭部县| 长沙市| 时尚| 漯河市| 岳池县| 阿荣旗| 礼泉县| 乡宁县| 虞城县| 古田县| 龙州县| 吴堡县| 天祝| 垦利县| 右玉县| 金华市| 北宁市| 余姚市| 平乐县| 河间市| 大同县| 北票市| 司法| 丽江市| 惠来县| 宁城县| 海南省| 满洲里市| 岑溪市| 江山市| 五寨县| 北流市| 治多县| 嵊州市| 湘西|