初始化列表:通常使用初始化是為了提高效率,它直接調用與實參匹配的構造函數?!疽驗橐话阍跇嬙旌瘮刁w內的復制也經過初始化-->計算賦值(此時會調用復制構造函數)兩個階段】;特別的有些時候只能用初始化列表,即不能賦值的參數,如:const或引用類型的成員,沒有默認構造函數的類類型成員。初始化列表中變量的初始化順序是先聲明的先初始化.
class cl1{ private: const int ci; int &ri;}; //ci,ri只能在初始化列表中進行初始化。
默認構造函數:全部形參是默認實參的構造函數也是默認構造函數。
只要自己定義了(任意的)構造函數,編譯器就不會為我們合成默認構造函數。
復制構造函數:單個形參為本類類型對象的引用的構造函數。對于不支持復制的類型(如IO類型)不能用復制構造函數。如果自己定義了復制構造函數(而不是構造函數,即:只定義構造函數,但沒有定義復制構造函數,則編譯器合成復制構造函數),則編譯器不會合成復制構造函數。【復制構造函數需要特別注意指針成員,以后將說明】
ifstream file1("filename1"); //ok, direct initialization.
ifstream file2="filename2"; //error
如何防止復制:可以通過將復制構造函數聲明為private來禁止普通函數(非成員,非友元函數)的訪問;可以通過聲明一個private復制構造函數而不對其定義來禁止成員函數和友元函數的訪問。

文章來源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!254.entry