看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《cplusplus (永夜)》之銘言: : ※ 引述《UNARYvvv (有趣生活)》之銘言: : : 想請問一下最後三行 : : 是直接呼叫 X(const Y&) 沒錯,畢竟傳入引數就是一個 Y : : 但那句「而不用第一步執行 X(const Y&) .....(略)」 : : 有點看不太懂了 : X x=y; => X x=X(y); 語意上本來該是這樣 可以這樣理解,但是若真的寫成 X x = X(y); 就是明示地(explicitly) 用 y 建構出一個 X 的暫時物件,和 X x = y; 那個 y 用隱含的(implicit) 方式建構出一個 X 的暫時物件不完全一樣。 : C++ ISO定義為直接... : X x(y); 這樣 X x=y; 和 X x(y); 兩者是不同的。 前者的語意要兩層的 ctor, 後者只是一層 ctor. 前者遇到 explict X(const Y&); 就編譯不過,後者可以。 這個 explict 就是上述 explicit 和 implicit 不完全一 樣的地方。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.168
cplusplus:這些我清楚啦 :p 感謝補充說明 140.115.205.46 06/23
UNARYvvv:嗯..這算進一步的探討了..先前我也沒歸入此情況 61.59.30.19 06/23
khoguan:不好意思,我班門弄斧了 ^^220.130.208.168 06/23
UNARYvvv:k兄考慮周到 別這麼說啦 很多地方還靠您解惑哩~ 61.70.137.117 06/23