最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++中怎么使用工廠函數(shù)

本篇內(nèi)容介紹了“C++中怎么使用工廠函數(shù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司從2013年成立,先為湘鄉(xiāng)等服務(wù)建站,湘鄉(xiāng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為湘鄉(xiāng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

如果在構(gòu)造過(guò)程中需要“虛行為”,使用工廠函數(shù) 
Reason(原因)

如果基類對(duì)象的狀態(tài)必須依賴對(duì)象的派生部分,我們需要使用虛函數(shù)(或等價(jià)物)以便盡量壓縮沒(méi)有完美構(gòu)造完成的對(duì)象被錯(cuò)誤使用的時(shí)間窗口。

Note(注意)

工廠的返回類型通常應(yīng)該默認(rèn)返回unique_ptr;如果有些用法需要共享,調(diào)用者可以將unique_ptr移動(dòng)到shared_ptr。然而,如果工廠的作者知道返回對(duì)象的所有的用法都是共享方式,也可以返回shared_ptr,這樣在函數(shù)體內(nèi)部可以使用make_shared節(jié)約一次內(nèi)存分配。

Example, bad(反面示例)
class B {
public:
   B() {
       /* ... */
       f(); // BAD: C.82: Don't call virtual functions in constructors and destructors
       /* ... */
   }

   virtual void f() = 0;
};
Example(示例)
class B {
protected:
   class Token {};

public:
   explicit B(Token) { /* ... */ }  // create an imperfectly initialized object
   virtual void f() = 0;

   template
   static shared_ptr create()    // interface for creating shared objects
   {
       auto p = make_shared(typename T::Token{});
       p->post_initialize();
       return p;
   }

protected:
   virtual void post_initialize()   // called right after construction
       { /* ... */ f(); /* ... */ } // GOOD: virtual dispatch is safe
};

class D : public B {                 // some derived class
protected:
   class Token {};

public:
   explicit D(Token) : B{ B::Token{} } {}
   void f() override { /* ...  */ };

protected:
   template
   friend shared_ptr B::create();
};

shared_ptr p = D::create();  // creating a D object

make_shared調(diào)用的構(gòu)造函數(shù)必須是公開的。通過(guò)要求一個(gè)保護(hù)的令牌保證構(gòu)造函數(shù)不能被公開調(diào)用,這樣我們就避免了不完全構(gòu)造的對(duì)象流出。由于提供了一個(gè)工廠方法create(),(自由存儲(chǔ)上的)構(gòu)造過(guò)程可以便利地實(shí)施。

Note(注意)

常規(guī)的工廠方法在自由存儲(chǔ)上分配對(duì)象內(nèi)存,而不是在堆?;蛘叻忾]的對(duì)象內(nèi)。

“C++中怎么使用工廠函數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


網(wǎng)頁(yè)名稱:C++中怎么使用工廠函數(shù)
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/gsdgoj.html