摘要:nullptr
转换为bool
,bool
转换为int
,那么为什么nullptr
不转换为int
下面的代码没问题:
void f(bool);
f(nullptr); // fine, nullptr converts to bool
这是可以的:
bool b;
int i(b); // fine, bool converts to int
那为什么这样不好呢?
void f(int);
f(nullptr); // why not convert nullptr to bool, then bool to int?
发布于 2012-10-27 02:20:03
因为这正是nullptr
的主要思想。
nullptr
旨在避免这种行为:
struct myclass {};
void f(myclass* a) { std::cout << "myclass\n"; }
void f(int a) { std::cout << "int\n"; }
// ...
f(NULL); // calls void f(int)
如果nullptr
可转换为int
,则会发生此行为。
所以问题是“为什么它可以转换成bool
?”
语法--“暗示”:
int* a = nullptr;
if (a) {
}
它看起来比:
if (a == nullptr) {
}
https://stackoverflow.com/questions/13092266
复制相似问题