【发布时间】:2015-02-27 15:03:46
【问题描述】:
在《Effective C++》一书中,第 27 条
class Widget {
public:
explicit Widget(int size);
...
};
void doSomeWork(const Widget& w);
doSomeWork(Widget(15)); // create Widget from int
// with function-style cast
我不确定调用 doSomeWork 时究竟发生了什么。我认为函数 doSomeWork 的参数 w 是由另一个 Widget 对象使用复制构造函数初始化的,但是另一个 Widget 对象在哪里?它是由 cmets 指示的通过强制转换创建的临时对象吗?谁能详细告诉我 doSomeWork 函数参数初始化时调用了什么?
【问题讨论】:
-
想一想:你的“函数式演员表”不只是对
Widget的构造函数的调用吗? -
这让我很困惑。我认为答案是肯定的。
标签: c++ constructor casting explicit