推 kkroy:OK很謝謝你! 我會再釐清一下觀念~ 11/23 20:49
※ 引述《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