本篇內(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:不要天真地模板化類繼承
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
編輯器接受這段代碼時(shí),無法知道vector
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í)!