91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宁城县| 嵊泗县| 湛江市| 石台县| 万宁市| 全南县| 蚌埠市| 土默特右旗| 北海市| 灌云县| 高尔夫| 弋阳县| 屏东市| 牡丹江市| 班戈县| 武乡县| 正宁县| 阿拉善右旗| 都江堰市| 高邑县| 绍兴市| 鄂托克旗| 三明市| 威远县| 蒙自县| 福海县| 昌都县| 岳阳市| 遂川县| 松阳县| 琼中| 文登市| 天台县| 宜兰县| 上林县| 余姚市| 六盘水市| 嘉荫县| 大竹县| 中超| 虎林市|