通过显式构造函数或显式转换函数进行转换
涉及调用显式构造函数或转换函数的转换不能隐式完成。我们可以请求使用 static_cast
明确完成转换。除了结果是临时的之外,其含义与直接初始化的含义相同。
class C {
std::unique_ptr<int> p;
public:
explicit C(int* p) : p(p) {}
};
void f(C c);
void g(int* p) {
f(p); // error: C::C(int*) is explicit
f(static_cast<C>(p)); // ok
f(C(p)); // equivalent to previous line
C c(p); f(c); // error: C is not copyable
}