作者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