【发布时间】:2016-12-26 11:16:06
【问题描述】:
今天这让我大吃一惊,直到我意识到它只有 compiles 和布尔参数。
#include <iostream>
using namespace std;
class Foo {
bool _param;
public:
Foo(bool param) {
_param = param;
}
void say() {
cout << "Param is "<< _param << endl;
}
};
int main() {
Foo foo = new Foo(true);
foo.say();
return 0;
}
我还注意到构造函数被调用了两次,那么我的猜测是“new Foo(true)”创建的指针被强制转换为布尔值。是这样吗?如果是这样,为什么它不适用于其他参数类型?还有什么我没看到的吗?
【问题讨论】:
-
标记构造函数
explicit可能会让你更快地找到错误。
标签: c++