gpt4 book ai didi

c++ - 为什么 nullptr 不能转换为 int?

转载 作者:IT老高 更新时间:2023-10-28 22:16:09 29 4
gpt4 key购买 nike

总结:nullptr转为boolbool转为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?

最佳答案

因为它正是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) {
}

关于c++ - 为什么 nullptr 不能转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092266/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com