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

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

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

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

亳州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),亳州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為亳州成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的亳州做網(wǎng)站的公司定做!

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

Reason(原因)

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

模板化包含很多成員函數(shù),特別是虛函數(shù)的類繼承層次會(huì)導(dǎo)致代碼膨脹。

Example, bad(反面示例)

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

template
class Vector : public Container {
public:
   // ...
};

Vector vi;
Vector 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.

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

Given this, the compiler cannot know if vector::sort() is called, so it must generate code for it. Similar for vector::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.

編輯器接受這段代碼時(shí),無法知道vector::sort()是否被調(diào)用了,因此必須為之生成代碼。vector::sort()的情況也一樣。只要這兩個(gè)函數(shù)沒有被調(diào)用,這就是一種代碼膨脹。想象一下:這種情況如果發(fā)生在一個(gè)包含數(shù)十個(gè)成員函數(shù)和被多次例示的數(shù)十個(gè)派生類的繼承結(jié)構(gòu)時(shí)會(huì)發(fā)生什么。

Note(注意)

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

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

Enforcement(實(shí)施建議)

標(biāo)記依賴模板參數(shù)的虛函數(shù)。

到此,相信大家對(duì)“C++中為什么不要模板化類繼承”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站題目:C++中為什么不要模板化類繼承
當(dāng)前路徑:http://weahome.cn/article/jghjsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部