作者khoguan (Khoguan Phuann)
看板C_and_CPP
標題Re: [問題] default constructor
時間Thu Jun 23 00:48:57 2005
※ 引述《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
1F:推 cplusplus:這些我清楚啦 :p 感謝補充說明 140.115.205.46 06/23
2F:→ UNARYvvv:嗯..這算進一步的探討了..先前我也沒歸入此情況 61.59.30.19 06/23
3F:推 khoguan:不好意思,我班門弄斧了 ^^220.130.208.168 06/23
4F:推 UNARYvvv:k兄考慮周到 別這麼說啦 很多地方還靠您解惑哩~ 61.70.137.117 06/23