Re: [問題] class的assignment運算子 (C++ Primer …

看板C_and_CPP (C/C++)作者 (CA)時間15年前 (2010/11/23 20:43), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《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

11/23 20:49, , 1F
OK很謝謝你! 我會再釐清一下觀念~
11/23 20:49, 1F
文章代碼(AID): #1CwxR_-r (C_and_CPP)
文章代碼(AID): #1CwxR_-r (C_and_CPP)