为什么在C中有指针到bool的隐式类型转换?

前端之家收集整理的这篇文章主要介绍了为什么在C中有指针到bool的隐式类型转换?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑类foo与两个这样定义的构造函数
class foo
{
public:
    foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
    foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};

用字符串文字实例化类,并猜测哪个构造函数调用

foo a ("/path/to/file");

输出

ctor 2

我不知道你,但我没有发现编程历史上最直观的行为.我敢打赌,有一些聪明的理由,但是,我想知道这可能是什么?

解决方法

在C写这个很常见
void f(T* ptr) {
    if (ptr) {
        // ptr is not NULL
    }
}

你应该使一个const char *构造函数.

原文链接:https://www.f2er.com/c/114377.html

猜你在找的C&C++相关文章