看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《kkroy (☆㊣↖煞氣ㄟ阿喂↘ξ★)》之銘言: : 我整理一下大家幫我回答的結論: : 1. HasPtr Obj2 = Obj1; 這個是 "初始化",你知道這是初始化,那怎麼又會去叫"賦值"運算子呢? : 是拿Obj1初始化Obj2,所以呼叫copy ctor,等價於 HasPtr Obj2(Obj1); 其實是不等價的 ... 如果 ctor 有加 explicit 修飾 你就不能用 T t = anotherT; 只能用 T t( anotherT ); 這是為什麼 char * 會被轉換為 std::string 但是 int 不能被轉換為 std::vector 的原因 : 2. operator= 適用時機: : 當物件已經存在,但被賦值的時候: : HasPtr Obt2; ////以沒有參數的ctor進行初始化 //// : Obj2 = Obj1; //// 賦值 //// : 這時候會呼叫覆寫後的operator=。 : 以上有錯請指正囉!! 宣告,初始,定義,賦值 這幾樣你可能要再弄清楚一點 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.49.238
kkroy:OK很謝謝你! 我會再釐清一下觀念~ 11/23 20:49