青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

void main() { }

Hello ,world !

常用鏈接

統(tǒng)計(jì)

最新評(píng)論

Effective C++ 學(xué)習(xí)歷程002

      既然開(kāi)始了,那就繼續(xù)吧,每一個(gè)單元包含其中的5個(gè)條款。
主要內(nèi)容就是代碼的了,但是代碼中也包含了一些注釋。而這些
代碼都是為各自對(duì)應(yīng)的條款服務(wù)的,有些可以值得推敲。希望對(duì)
你有些幫助。ok,謝謝!
  1 // ====================================================================
  2 // --- 條款06:若不想實(shí)驗(yàn)編譯器自動(dòng)生成的函數(shù),就該明確拒絕
  3 // 注意:
  4 // 1    為駁回編譯器自動(dòng)(暗自)提供的機(jī)能,可將相應(yīng)的成員函數(shù)聲明為private or protected
  5 //      并且不予實(shí)現(xiàn)。使用像Uncopyable這樣的base class 也是一種做法
  6 namespace testItem06
  7 {
  8     class Uncopyable
  9     {
 10     protected:
 11         Uncopyable() {}
 12         ~Uncopyable() {}
 13     private:
 14         Uncopyable(const Uncopyable&) ;
 15         Uncopyable& operator = (const Uncopyable&) ;
 16     } ;
 17     class HomeForSale : private Uncopyable
 18     { // 
 19     } ;
 20 }//namespace testItem06
 21 // ====================================================================
 22 // --- 條款07:為多態(tài)基類聲明virtual 析構(gòu)函數(shù) 
 23 // 注意:
 24 // 1    polymorphic(多態(tài)的)base class 應(yīng)該聲明一個(gè)virtual 析構(gòu)函數(shù)。
 25 //      如果class帶有任何virtual函數(shù),她應(yīng)該擁有一個(gè)virtual析構(gòu)函數(shù)
 26 // 2    class 的設(shè)計(jì)目的如果不是作為base class使用,或不是為了具備多態(tài)性
 27 //      就不應(yīng)該聲明一個(gè)virtual 析構(gòu)函數(shù) 
 28 // 3
 29 namespace testItem07
 30 {
 31     class TimeKeeper
 32     {
 33     public:
 34         TimeKeeper() {};
 35         virtual ~TimeKeeper() {};
 36         // should virtual for delete pBase ;//destroy exactly
 37         // 
 38     } ;
 39     class AtomicClock : public TimeKeeper{ } ;// 
 40     class WaterClock : public TimeKeeper{ } ;// 
 41     class WristClock : public TimeKeeper{ } ;// 
 42     class AWOV
 43     {
 44     public:
 45         virtual ~AWOV() = 0 ;
 46     } ;
 47     AWOV::~AWOV() {} //must has a defalut definition
 48 }
 49 // ====================================================================
 50 // --- 條款08:別讓異常逃離析構(gòu)函數(shù) 
 51 // 注意:
 52 // 1    析構(gòu)函數(shù)絕對(duì)不要吐出異常。如果一個(gè)唄析構(gòu)函數(shù)調(diào)用的函數(shù)可能拋出異常,
 53 //      那么在析構(gòu)函數(shù)內(nèi)應(yīng)該捕捉任何異常,然后吞下它們(不傳播)或是結(jié)束程序
 54 // 2    如果客戶需要對(duì)某個(gè)操作函數(shù)運(yùn)行期拋出的異常做出反應(yīng),那么class 應(yīng)該提供
 55 //      一個(gè)普通的函數(shù)(而非在系后函數(shù)中)執(zhí)行該操作 
 56 // 3
 57 namespace testItem08
 58 {
 59     class DBConnection
 60     {
 61         // .
 62     public:
 63         void start() {}
 64         void close() {}
 65         // .
 66     } ;
 67     class DBConn
 68     {
 69     private:
 70         bool   bClose_ ;
 71         DBConnection db ;
 72     public:
 73         void start() //
 74         {
 75             db.start() ;
 76             bClose_ = false ;
 77         }
 78         void close() // better .note 2
 79         {
 80             db.close() ;
 81             bClose_ = true ;
 82         }
 83         ~DBConn()// better .
 84         {
 85             if(!bClose_)
 86             {
 87                 try
 88                 {
 89                     db.close() ;
 90                 }
 91                 catch()
 92                 {// better .note 1
 93                     handleError() ;// or: db.close() again 
 94                     bClose_ = false ;
 95                 }
 96             }
 97         }
 98     protected:
 99         void handleError() {} // 
100     } ;
101 }//namespace testItem08
102 // ====================================================================
103 // --- 條款09:絕不vuz構(gòu)造和析構(gòu)過(guò)程中調(diào)用virtual 函數(shù) 
104 // 注意:
105 // 1    在構(gòu)造和析構(gòu)過(guò)程中不要調(diào)用virtual函數(shù),因?yàn)檫@類調(diào)用從不下降只derived class
106 //      (比起當(dāng)前執(zhí)行構(gòu)造和析構(gòu)函數(shù)的那一次 class)
107 // 2
108 // 3
109 namespace testItem09
110 {
111     class Transaction_Bad
112     {
113     private:
114         int     value_ ;
115     public:
116         Transaction_Bad() ;
117         virtual void logTransaction_Bad() const = 0 ;
118     } ;
119     Transaction_Bad::Transaction_Bad()
120     {   // 
121         //logTransaction_Bad() ; // warn !!! or error
122     }
123     void Transaction_Bad::logTransaction_Bad() const
124     { std::cout << "  virtual void Transaction_Bad::logTransaction_Bad() const\n" ; }
125     class BuyTransaction_Bad : public Transaction_Bad
126     {
127     public:
128         //BuyTransaction_Bad():Transaction_Bad() {}
129         virtual void logTransaction_Bad() const
130         { std::cout << "  virtual void BuyTransaction_Bad::logTransaction_Bad() const\n" ; }
131     } ;
132     class SellTransaction_Bad : public Transaction_Bad
133     {
134     public:
135         //BuyTransaction_Bad():Transaction_Bad() {}
136         virtual void logTransaction_Bad() const
137         { std::cout << " virtual void SellTransaction_Bad::logTransaction_Bad() const\n" ; }
138     } ;
139     // --------------
140     class Transaction_Good
141     {
142     public:
143         explicit Transaction_Good(const std::string& logInfo)  ;
144         void logTransaction_Good(const std::string& logInfo) const  ;//non-virtual
145     } ;
146     Transaction_Good::Transaction_Good(const std::string& logInfo)
147     {
148         // 
149         logTransaction_Good(logInfo) ; // warn !!!
150     }
151     void Transaction_Good::logTransaction_Good(const std::string& logInfo) const
152     {
153         std::cout << " void Transaction_Good::logTransaction_Good(const std::string& logInfo) const\n"
154                   << " logInfo: " << logInfo << "\n" ;
155     }
156     class BuyTransaction_Good : public Transaction_Good
157     {
158     private:
159         static string createLogStr(int index)
160         { return " static string BuyTransaction_Good::createLogStr(int index)" ; }
161     public:
162         BuyTransaction_Good(int index):Transaction_Good(createLogStr(index))
163         {} // 
164         virtual void logTransaction_Good() const
165         { std::cout << " virtual void BuyTransaction_Good::logTransaction_Good() const\n" ; }
166     } ;
167     class SellTransaction_Good : public Transaction_Good
168     {
169     private:
170         static string createLogStr(int index)
171         { return " static string SellTransaction_Good::createLogStr(int index)" ; }
172     public:
173         SellTransaction_Good(int index):Transaction_Good(createLogStr(index))
174         {} // 
175         virtual void logTransaction_Good() const
176         { std::cout << " virtual void SellTransaction_Good::logTransaction_Good() const\n" ; }
177     } ;
178 }//namespace testItem09
179 // ====================================================================
180 // --- 條款10:令operator= 返回一個(gè) referance to *this
181 // 注意:
182 // 1    令賦值(assignment)操作符返回一個(gè) reference tio *this 
183 namespace testItem10
184 {
185     class Widget
186     {
187     private:
188         int value_ ;
189     public:
190         //Widget():value_(0) {} //  or remove
191         Widget(int v=0):value_(v) {}
192         Widget& operator = (const Widget& rhs) ;
193         Widget& operator += (const Widget& rhs) ;
194         void printW()
195         { std::cout << " Widget::value_: " << value_ << "\n" ; }
196         // 
197     } ;
198     Widget& Widget::operator = (const Widget& rhs)
199     {
200         value_ = rhs.value_ ;
201         return *this ;
202     }
203     Widget& Widget::operator += (const Widget& rhs)
204     {
205         value_ += rhs.value_ ;
206         return *this ;
207     }
208 }


posted on 2010-05-30 15:35 only 閱讀(217) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 學(xué)習(xí)研究瑣碎編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲影院在线| 午夜精品福利一区二区三区av| 久久综合国产精品| 久久成人精品无人区| 欧美中文在线视频| 久久久久国色av免费观看性色| 久久嫩草精品久久久精品一| 91久久国产综合久久91精品网站| 欧美一级一区| 久久久久久九九九九| 老牛嫩草一区二区三区日本| 欧美国产亚洲精品久久久8v| 欧美日韩精品免费观看视一区二区| 欧美喷潮久久久xxxxx| 国产精品久久久久久久久搜平片| 国产日韩欧美一二三区| 国外成人性视频| 亚洲精品欧美| 欧美影院在线| 91久久国产综合久久蜜月精品| 亚洲激情综合| 欧美在线一二三| 欧美成人精品激情在线观看| 国产精品久久夜| 亚洲黄色大片| 欧美亚洲午夜视频在线观看| 欧美成人免费小视频| 亚洲一区二区伦理| 免费观看日韩av| 国产亚洲一区在线播放| 亚洲深夜福利在线| 欧美激情四色| 久久国产精品99精品国产| 欧美日韩国产影院| 亚洲成在线观看| 欧美在线看片| 亚洲视频1区2区| 欧美日韩国产精品一区二区亚洲| 激情久久综艺| 久久精品男女| 亚洲一区在线观看视频 | 91久久精品国产| 欧美专区日韩专区| 一本到高清视频免费精品| 欧美成黄导航| 亚洲国产老妈| 美国成人直播| 久久久久久久激情视频| 国产亚洲午夜高清国产拍精品| 亚洲一区二区三区四区在线观看| 亚洲国产成人午夜在线一区| 久久婷婷久久一区二区三区| 国产综合香蕉五月婷在线| 欧美自拍丝袜亚洲| 午夜精品久久久久久久99樱桃| 国产精品久久久久一区| 亚洲自拍三区| 亚洲与欧洲av电影| 国产精品亚洲视频| 欧美一级一区| 欧美一区二区精品在线| 国产一区二区中文| 美脚丝袜一区二区三区在线观看 | 亚洲大胆女人| 久久成人这里只有精品| 亚洲一区二区三区在线看| 欧美午夜一区| 欧美亚洲在线| 欧美专区在线| 亚洲国产另类精品专区| 亚洲二区三区四区| 欧美日韩1区2区3区| 一区二区三区回区在观看免费视频| 日韩视频第一页| 国产精品视频久久| 久久一区中文字幕| 美日韩精品视频免费看| 日韩网站在线看片你懂的| 99精品视频免费在线观看| 国产精品一区二区三区乱码| 久久久久久网站| 欧美高清自拍一区| 亚洲嫩草精品久久| 亚久久调教视频| 亚洲欧洲三级| 亚洲欧美日韩专区| 亚洲国产精品精华液网站| 999在线观看精品免费不卡网站| 国产精品久久久99| 欧美本精品男人aⅴ天堂| 欧美日韩在线另类| 久久精品国产综合| 免费观看不卡av| 亚洲欧美国产视频| 久久综合给合| 欧美一级大片在线观看| 美女主播一区| 欧美中文字幕在线| 欧美精品少妇一区二区三区| 午夜久久黄色| 欧美久久99| 久久综合国产精品| 国产精品久久久久久久久久久久久久 | 欧美承认网站| 久久国产精品一区二区三区| 欧美二区在线| 久久久久久久国产| 国产精品www994| 欧美福利视频在线观看| 国产日韩亚洲欧美| 99国产精品99久久久久久粉嫩| 黑丝一区二区三区| 亚洲一区免费在线观看| 中文亚洲免费| 欧美国产成人在线| 欧美成人黑人xx视频免费观看| 国产精品亚洲激情| 亚洲午夜久久久| 亚洲午夜性刺激影院| 欧美mv日韩mv国产网站| 久久天天躁狠狠躁夜夜av| 国产精品一卡二| 久久露脸国产精品| 欧美日韩成人免费| 久久av一区二区三区亚洲| 免费成人性网站| 一本久久a久久免费精品不卡| 久久综合色8888| 欧美在线国产| 欧美一区二区高清| 宅男在线国产精品| 欧美日韩在线播放三区| 欧美精品一区二区三区久久久竹菊 | 久久综合伊人| 亚洲精品久久久蜜桃| 国产精品美女久久| 日韩视频免费观看高清完整版| 亚洲作爱视频| 最新日韩在线视频| 亚洲精品在线三区| 国产亚洲精久久久久久| 午夜日韩av| 亚洲国产精品久久人人爱蜜臀| 99在线|亚洲一区二区| 久久尤物电影视频在线观看| 久久精品中文| 免费成人高清| 亚洲制服欧美中文字幕中文字幕| 日韩亚洲精品视频| 一本色道久久88精品综合| 亚洲国产精品一区二区www在线| 久久久综合视频| 免费亚洲电影| 亚洲激情av在线| 久久精品人人| 99精品国产99久久久久久福利| 中文一区二区| 欧美人与性禽动交情品 | 亚洲婷婷国产精品电影人久久| 欧美日韩中文字幕精品| 亚洲午夜精品17c| 久久久久高清| 亚洲精品欧美| 国产视频精品va久久久久久| 久久久青草青青国产亚洲免观| 亚洲第一成人在线| 亚洲免费在线观看| 在线视频国产日韩| 欧美午夜精品电影| 久久国产精品久久久| 亚洲人成免费| 久久久久久久网站| 中文av一区特黄| 依依成人综合视频| 欧美午夜一区二区福利视频| 久久久人人人| 亚洲一区日本| 亚洲啪啪91| 另类天堂视频在线观看| 亚洲欧美成人在线| 亚洲欧洲一区二区三区久久| 国产精品亚洲网站| 欧美国产一区二区三区激情无套| 午夜欧美大片免费观看| 亚洲精品一区二区三区99| 老司机久久99久久精品播放免费| 亚洲夜间福利| 最新高清无码专区| 狠狠色狠狠色综合日日91app| 欧美午夜在线视频| 欧美精品久久99| 狼人社综合社区| 久久精品国产欧美亚洲人人爽| 亚洲午夜极品| 亚洲视频免费在线| 日韩午夜剧场| 亚洲精品亚洲人成人网| 亚洲国产精品成人| 欧美电影电视剧在线观看| 久久视频一区|