1.缺省情況下, 用一個類的對象初始化另一個對象, 或者向該類另一個對象賦值, 都由缺省的按成員語義(default memberwise semantics)支持
   在某些情況下, 對類的安全性和處理正確性是不夠的, 需要類設(shè)計者提供特殊的拷貝構(gòu)造函數(shù)(copy constructor)和拷貝賦值操作符(copy assignment

operator)的定義
2.new類對象 --只有new表達式成功的申請到空間內(nèi)存, 構(gòu)造函數(shù)才會被調(diào)用
3.構(gòu)造函數(shù)定義為inline時, 創(chuàng)建對象是會在調(diào)用點展開構(gòu)造函數(shù)
4.成員初始化列表(member initialization list)
5.構(gòu)造函數(shù)不能用const或volatile關(guān)鍵字來聲明
   一個const類對象在"從其構(gòu)造函數(shù)完成到析構(gòu)函數(shù)開始"這段時間內(nèi)才被認為是const, volatile類對象也一樣
6.explicit修飾符通知編譯器不要提供隱式轉(zhuǎn)換
   void print(const CTest &test);
   //...
   print("oops");  //這種調(diào)用會把"oops"轉(zhuǎn)換成一個CTest對象
   缺省情況下, 單參數(shù)構(gòu)造函數(shù)(或者有多個參數(shù), 除了第一個參數(shù)外, 其他都有缺省實參)被用作轉(zhuǎn)換符
   無意的隱式類轉(zhuǎn)換, 是很難跟蹤的錯誤!, 關(guān)鍵字explicit被引入到標準c++中, 以幫助我們抑制這種不受歡迎的編譯輔助行為
   explicit只能被應(yīng)用在構(gòu)造函數(shù)上
7.缺省構(gòu)造函數(shù)是不需要用戶指定實參就能夠被調(diào)用的構(gòu)造函數(shù), --并不意味著它不能接受實參, 只意味著構(gòu)造函數(shù)的每個參數(shù)都有一個缺省值與之關(guān)聯(lián)
8.限制對象創(chuàng)建 --把相關(guān)構(gòu)造函數(shù)放到非公有訪問區(qū)內(nèi), 從而限制或顯示禁止某些形式的對創(chuàng)建動作
   在實際的c++程序中, 非公有的構(gòu)造函數(shù)主要用處是:
    防止用一個類對象想該類另一個對象做拷貝
    指出只有當一個類在繼承層次中被用作基類, 而不能直接被應(yīng)用程序操縱時, 構(gòu)造函數(shù)才能被調(diào)用
9.拷貝構(gòu)造函數(shù) --用一個類對象初始化該類的另一個對象被稱為缺省按成員初始化(default memberwise initialization)
   一個類對象想該類的另一個對象作拷貝是通過依次拷貝每個非靜態(tài)數(shù)據(jù)成員來實現(xiàn)
   類設(shè)計者可以通過提供特殊的拷貝構(gòu)造函數(shù)(copy constructor)來改變?nèi)笔〉男袨?/span>
   拷貝構(gòu)造函數(shù)不一定是const, 但它卻必須是引用
10.無論何時, 當在一個函數(shù)內(nèi)刪除一個獨立的堆對象時, 最好使用auto_ptr類對象而不是一個實際的指針
   如果delete表達式失敗, 如一個異常被拋出, 會到時內(nèi)存泄露(異常拋出, 跳過了delete操作?), 不會調(diào)用析構(gòu)函數(shù)
   所以建議用auto_ptr智能指針
11.對于在堆中分配的類對象數(shù)組的元素, 我們沒有辦法提供一組顯示的值來做初始化, 如果細化支持通過new表達式分配數(shù)組, 則類必須提供一個缺省的構(gòu)

造函數(shù), 或不提供構(gòu)造函數(shù)
12.用一個類對象初始化另一個類對象, 稱為按成員初始化(default memberwise initialization)
    發(fā)生在 用一個類對象顯示的初始化另一個對象
           把一個類對象作為實參傳遞給一個函數(shù)
           把一個類對象作為一個函數(shù)的返回值傳遞回來
           非空順序容器類型的定義
           把一個類對象插入到一個容器類型中
13.成員類對象初始化
14.缺省按成員賦值(default memberwise assignment) --用一個類對象向該類的另一個對象的賦值操作
    用隱式的拷貝賦值操作符
    一般來所, 如果缺省的按成員初始化對于一個類不合適, 則缺省的按成員賦值也不合適
    通過提供一個現(xiàn)實的拷貝賦值操作符的實例, 可以改變?nèi)笔〉陌闯蓡T賦值
    注意要防止一個類對象向自己賦值 --對于"先釋放與該對象當前相關(guān)的資源, 以便分配與被拷貝對象相關(guān)資源"這樣的拷貝賦值操作符, 拷貝自身尤其不

合適
    當一個類對象被賦值給該類的另一個對象是:
        a檢查該類, 判斷是否提供了一個現(xiàn)實的拷貝賦值操作符
        b如果是, 檢查訪問權(quán)限, 判斷是否可以被調(diào)用
        c如果不能被調(diào)用, 編譯錯誤, 否則執(zhí)行這個調(diào)用
        d如果該類沒有提供顯示的拷貝賦值操作符, 則執(zhí)行按缺省成員賦值
        e在缺省按成員賦值下, 每個內(nèi)置類型或復(fù)合類型的數(shù)據(jù)成員被賦值給相應(yīng)的成員
        f對于每個類成員對象, 遞歸執(zhí)行a到f步, 知道所有內(nèi)置或復(fù)合類型的數(shù)據(jù)成員都被賦值
    如果希望完全禁止按成員拷貝的行文, 將操作符聲明為private并且不提供實際定義即可
    一般來說, 應(yīng)該將拷貝構(gòu)造函數(shù)和拷貝賦值操作視為一個個體單元
15.C++語言不能有效地返回一個類對象, 這被視為c++語言的一個重大缺陷
16.c++類對象的初始化總是比賦值更有效